- Virtualenv: руководство по виртуальному окружению Python
- Установка virtualenv
- Создание виртуального окружения
- Активация виртуального окружения
- Деактивация виртуального окружения
- Использование виртуальных сред venv и virtualenv для создания окружения Python
- Для чего нужно виртуальные среды?
- Установка и создания окружения с virtualenv
- Активация и выход из окружения
- Управление средами через virtualenvwrapper
- Настройки для Linux
- Настройки для Windows
- Основные команды
- Создание виртуальных сред со встроенным пакетом Python venv
- Создание виртуального окружения в Pycharm
- Создание списка установленных пакетов Requirements.txt
- Установка и использование модуля virtualenv для Python.
- Установка virtualenv в Python 2.7.
- Использование virtualenv.
- Справочное руководство virtualenv.
Virtualenv: руководство по виртуальному окружению Python
Примечание: В этом руководстве используется менеджер пакетов pip, если он у вас не установлен, то сначала установите его.
Virtualenv — это инструмент для разделения зависимостей, необходимых для проектов. При работе над несколькими проектами часто возникает проблема, что разным проектам нужны разные версии одних и тех же пакетов, virtualenv помогает нам решать подобные проблемы. Это также решает проблему засорения системы ненужными пакетами, так как виртуальные окружения можно легко создавать и удалять.
Установка virtualenv
Virtualenv — это просто пакет, доступный в pypi, вы можете использовать pip для его установки.
После установки вам может потребоваться добавить C:\Python34\Scripts в переменную среды PATH. Таким образом, такие команды, как pip и virtualenv можно будет выполнять из любой директории.
Создание виртуального окружения
Создайте новую директорию с именем python_project и измените текущую рабочую директорию на python_project:
Чтобы создать виртуальное окружение внутри python_project, вам нужно выполнить следующую команду:
Это создаст новую директорию my_env внутри python_project. Эта директория будет содержать копию интерпретатора python и копию исполняемого файла pip. Здесь мы использовали my_env в качестве имени, но вы можете использовать любое другое имя. Теперь ваше виртуальное окружение готово к использованию, вам просто нужно его активировать.
В этом руководстве есть один момент: мы установили virtualenv используя python 3.4. Предположим, у вас также есть python 2.7 и вы хотите создать виртуальное окружение, используя python 2.7 вместо python 3.4, вы можете сделать это с помощью следующей команды:
Активация виртуального окружения
Для Windows выполните следующую команду:
После выполнения вышеуказанной команды ваша командная строка изменится, и будет выглядеть примерно так:
Обратите внимание на (my_env) , это означает, что вы сейчас работаете в виртуальном окружении.
Теперь ваше виртуальное окружение активировано. Все, что вы здесь установите, будет использоваться только этим проектом.
Давайте попробуем установить пакет requests.
В Windows введите следующее:
Вы не можете ввести просто pip install requests в windows, потому что будет вызываться глобальный pip, если вы добавили C:\Python34\Scripts в переменную среды PATH. Если вы не добавили, то вы получите ошибку.
В Linux вам нужно ввести следующее:
Деактивация виртуального окружения
Для деактивации виртуального окружения используйте следующую команду:
Эта команда вернет вас обратно в системный интерпретатор python по умолчанию, где вы можете установить пакет в общесистемное окружение.
Теперь вы должны видеть преимущества использования virtualenv. Это помогает нам изолировать зависимости (пакеты) проектов избегая конфликтов.
Использование виртуальных сред venv и virtualenv для создания окружения Python
Виртуальные среды (окружения) используются в Python 3 контроля версионности пакетов. Кроме контроля версий среды используют для использования разных интерпретаторов. Самих пакетов, которые создают виртуальные окружения много. В этой статье речь пойдет про venv, virtualenv и virtualenvwrapper.
Навигация по посту
Для чего нужно виртуальные среды?
При создании скрипта или программы вы часто используете сторонние модули (пакеты). Если в последующем потребуется перенос программы на другой компьютер, то вы можете столкнуться с двумя проблемами:
- Нужные пакеты отсутствуют на новом компьютере и придется проверять каждый файл программы для их поиска. Либо получить список установленных пакетов через «pip list» на старом компьютере, который выведет множество лишних модулей.
- Даже если количество пакетов или файлов программ маленькое, или вы его создали отдельно, то вы все равно можете столкнуться с проблемами в версиях. Пакеты могли быть обновлены, а методы и классы изменены.
Использование виртуальных сред избавляет вас от этих проблем. В таком виртуальной среде находится свой интерпретатор, свой pip и все пакеты относятся только к нему. Так же, весь проект, можно перенести как папку на другой компьютер без ошибок.
Кроме этого вы можете запускать разные версии Python в разных виртуальных средах, что сильно упрощает работу.
Установка и создания окружения с virtualenv
Самый популярный пакет, который используется для создания виртуальных сред в Python, это virtualenv. Для его установки на Windows выполните:
Для установки на Linux системах, для Python 3, понадобится выполнить такую команду:
Если вы не будете использовать sudo, то в зависимости от версии ОС у вас появятся разные ошибки. В CentOS установка не выполнится вовсе, а в Ubuntu не будет добавлен путь в переменную окружения:
- PermissionError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6’
- Command ‘virtualenv’ not found, but can be installed with: sudo apt install virtualenv
Далее, вне зависимости от того используете ли вы Linux или Windows, вы можете выполнить команду получения справки:
Я использую Python 3.6, и так я создам окружение в папке projectname/venv:
Способ выше устанавливает окружение относительно текущего пути. Если нужно установить на другом диске или каталоге, то можно использовать абсолютный путь. Так же не обязательно указывать параметр «-p» если вы используете одну версию Python. Вариант как это может быть сделано на Windows:
Само расположение виртуального окружения рекомендуется создавать в одной папке вместе разрабатываемым приложением. Такую структуру будет легче сопровождать. Я обычно придерживаюсь такой структуры:
Активация и выход из окружения
Для того что бы виртуальное окружения начало работать его нужно активировать. В разных ОС это делается по-разному.
В случаях с Linux указываем полный путь до venv/bin/activate:
Для активации в Windows, в папке venv\Scripts есть несколько файлов:
- activate.ps1 — для активации через Powershell;
- activate.bat — для активации через CMD.
Для активации просто укажите полный путь до файла. Например:
О том что вы находитесь в виртуальном окружении свидетельствуют следующие надписи:
Вы так же можете сравнить количество установленных пакетов внутри виртуального окружения с тем, что установлено вне:
Теперь вы можете устанавливать пакеты, которые будут работать только в этой среде.
Для выхода из окружения, за исключением запуска с помощью CMD, используйте команду:
Для CMD нужно указать путь до файла «venv\Scripts\deactivate.bat».
Управление средами через virtualenvwrapper
Если вы создаете множество виртуальных сред, например для тестирования в разных версиях Python, вы можете использовать virtualenvwrapper. Этот пакет представляет собой надстройку для virtualenv для более удобной работы и устанавливается отдельно.
Благодаря этому пакету мы сможем запускать ваши окружения так:
Для Windows нужно установить следующий пакет:
Для Linux нужно так же использовать sudo:
Настройки для Linux
Virtualenvwrapper хранит все окружения в одном месте. Это место определяется через переменную WORKON_HOME в Linux и по умолчанию равно директории ‘/home/пользователь/.virtualenvs’. Если вы хотите изменить это расположение — выполните команду экспорта с нужным путем:
Следующая команда добавит скрипты в домашний каталог для удобной работы:
При выполнении предыдущей команды у меня появилась ошибка:
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader
Она исправилась добавлением переменной в env с путем до нужного интерпретатора:
Настройки для Windows
Все виртуальные среды, которые будут созданы, по умолчанию будут располагаться по пути «C:\Users\%USERNAME%\Envs». Если вам нужно изменить расположение, то создайте переменную WORKON_HOME с нужной директорией:
Важный момент, в случае с Windows, команды virtualenvwrapper не будут выполняться Powershell. Команды работают только через CMD.
Основные команды
Далее мы можем использовать следующие команды (основные):
- mkvirtualenv — создание окружения;
- lsvirtualenv — отображение списка окружений;
- rmvirtualenv — удаление;
- workon — переключение между виртуальными средами;
- deactivate — выход из текущего окружения.
Так мы создадим виртуальную среду:
Так выйдем из созданной среды:
Если нужно использовать другую версию Python:
Создание виртуальных сред со встроенным пакетом Python venv
Ранее, до версии Python >= 3.6 базовая установка интерпретатора шла вместе с пакетом pyenv, но на данный момент он считается устаревшим и более не поддерживается. На его смену пришел venv. В некоторых версиях ОС (Ubuntu/Debian) может потребоваться его отдельная установка:
Проверить, то что пакет venv установлен, можно так:
Следующая команда создаст виртуальную среду:
Выбранная версия Python и стандартные библиотеки будут скопированы в указанную папку.
Активация окружения выполняется следующим образом:
Для выхода из окружения:
Создание виртуального окружения в Pycharm
В некоторых IDE, например Pycharm, консоль встроенная и по умолчанию у вас будет запускаться интерпретатор выбранный в настройках. В Pycharm вы можете создать или изменить проект привязав его к определенному интерпретатору.
Виртуальную среду можно создать при создании нового проекта. Для этого нужно зайти по следующему пути:
В новом окне выбрать название проекта, место для копирования, интерпретатор и нажать кнопку создания окружения:
Для настройки окружения для старых проектов нужно зайти в настройки:
Во вкладе «Python Interpreter» будет выбор из существующих интерпретаторов (1). Либо можно создать новый (2):
Создание списка установленных пакетов Requirements.txt
Используя виртуальные окружения можно легко создавать файл, в котором будут собраны все названия и версии пакетов для определенного проекта. Этот подход используется для удобства работы, так как одной программой мы сразу установим нужные пакеты.
Так мы получим список пакетов, установленных в виртуальном окружении, в формате читаемом pip:
Следующим способом мы экспортируем этот список в файл Requirements.txt (способ подходит для Bash/CMD/Powershell):
На другом компьютере/среде мы можем этот список быстро проверить и установить отсутствующие пакеты следующей командой:
Установка и использование модуля virtualenv для Python.
В материале рассматривается установка модулем virtualenv для Python 2.7. и работа с виртуальным окружением.
Что бы использовать виртуальное окружение в Python 3.5 и выше, используйте встроенный модуль venv .
Установка virtualenv в Python 2.7.
Внимание! Сторонний модуль virtualenv для Unix систем необходимо устанавливать под версию python, которая используется операционной системой по умолчанию.
Для начала использования virtualenv , ее нужно установить. Виртуальное окружение будем ставить в систему, т. к. виртуальная среда системой ни как не используется. Это первое и последнее, что устанавливается в систему.
Помним, что поставляемый с Unix системами Python не имеет пакетного менеджера pip , следовательно модуль virtualenv , необходимо устанавливать из пакетов операционной системы, при помощи пакетного менеджера apt-get или используя флаг -m интерпретатора Python. Пользователям Windows, то же будет интересно yзнать о таком методе установки пакетов, не входящих в стандартную библиотеку.
Для Unix систем предпочтительней использовать установку уже скомпилированного модуля virtualenv под используемую по умолчанию версию Python операционной системы, командой sudo apt install python-virtualenv .
Если в вашей системе по умолчанию используется версия Python3, то модуль virtualenv можно установить следующей командой:
Обратите внимание, что в Debian, установленный таким образом модуль virtualenv для python3 может не заработать. В таком случае, необходимо файл virtualenv.py запускать вручную или, для удобства создать командный файл. В дистрибутивах Ubuntu, такой проблемы не замечено.
Так же для версий Python 3.5 и выше, для создания виртуальных сред, можно использовать встроенный модуль venv . В этом случае устанавливать ничего не надо. Обратите внимание, что функциональность и приемы использования встроенного модуля venv сильно отличается от стороннего модуля virtualenv .
Использование virtualenv.
Перенос экземпляра системного Python или того, который мы установили:
Где /path/to/python-3.x.x/bin/python путь до бинарного файла, нужного нам интерпретатора Python например /opt/python-3.7.4/bin/python или для Windows c:\python-3.7.4\bin\python
Активация виртуального окружения:
После активации виртуального окружения вы можете, без каких либо ограничений и без sudo , пользоваться pip не боясь причинить ущерб системе. Таких виртуальных сред может быть бесконечно много и все они будут изолированы как друг от друга, так и от системы. Каждая виртуальная среда может иметь свою собственную версию Python и может иметь собственный независимый набор установленных пакетов.
Для выхода из виртуального окружения просто наберите deactivate
Для удаления virtualenv, просто удалите директорию с виртуальным окружением
Справочное руководство virtualenv.
Использование:
- где ENV_DIR абсолютный или относительный путь к каталогу, в котором создается виртуальная среда.
Опции:
- -version : показывает установленную версию virtualenv
- -h , —help : показать это справочное сообщение и выйти
- -v , —verbose : увеличивает вывод информации.
- -q , —quiet : уменьшает вывод информации.
- -p PYTHON_EXE , —python=PYTHON_EXE : используемый интерпретатор Python, например, —python=/opt/python-3.7.4/bin/python будет использовать интерпретатор из директории /opt/python-3.7.4/bin/python для создания новой среды. По умолчанию используется интерпретатор, с которым был установлен virtualenv.
- —clear : очищает установку, что бы начать с нуля.
- —system-site-packages : передает виртуальной среде доступ к глобальным пакетам.
- —always-copy : копирует файлы, а не символические ссылки.
- —relocatable : делает СУЩЕСТВУЮЩУЮ среду virtualenv перемещаемой. Это исправляет сценарии и делает все файлы .pth относительными.
- —unzip-setuptools : разархивирует Setuptools при установке.
- —no-setuptools : не устанавливает setuptools в новом virtualenv.
- —no-pip : не устанавливает pip в новом virtualenv.
- —extra-search-dir=DIR : каталог для поиска дистрибутивов pip. Эту опцию можно указывать несколько раз.
- —prompt=PROMPT : предоставляет альтернативный префикс приглашения для этой среды.
- —download : загружает предустановленные пакеты из PyPI.
- —no-download : не загружает предустановленные пакеты из PyPI.
- —no-site-packages : РЕКОМЕНДУЕТСЯ. Отсутствие доступа к пакетам переносимого Python в виртуальное окружение, теперь является поведением по умолчанию.