Использование виртуальных сред 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):
На другом компьютере/среде мы можем этот список быстро проверить и установить отсутствующие пакеты следующей командой:
Виртуальное окружение в Python на Windows
Виртуальное окружение для Python это способ одновременной работы с несколькими проектами, для которых требуются раные версии и наборы библиотек. Версия самого Python при работе с раным виртуальным окружением может также отличаться. При этом не нужно переустанавливать версии языка и библиотек на глобальном уровне. Использование виртуального окружения позволяет абстрагироваться от библиотек, используемых в системе.Чтобы работать в другом проекте с другими версиями библиотек, достаточно просто переключить виртуальное окружение. Вам понадобятся два инструмента: virtualenv и virtualenvwrapper .
virtualenv
virtualenv — утилита для создания виртуальных окружений.
Для установки виртуального окружения:
Для создания виртуального окружения:
В текущем каталоге будет создана новая директория с указанным вами названием, куда будут перенесены python , pip и в дальнейшем установлены другие библиотеки.
Активация виртуального окружения:
Для деактивации виртуального окружения:
virtualenvwrapper-win
Virtualenvwrapper это порт проекта virtualenvwrapper от Doug Hellmann под любую версию Windows. Virtualenvwrapper удобнее тем, что хранит все виртуальные окружения в одном месте, не засоряя папки с проектами, а также позволяет привязать виртуальное окружение к проекту. При установке скрипты virtualenvwrapper размещаются в %PYTHONHOME%\Scripts .
Основные команды virtualenvwrapper
Создает новое виртуальное окружение . По умолчанию виртуальные окружения создаются в %USERPROFILE%\Envs . После создания сразу активирует виртуальное окружение.
Выводит список всех доступных виртуальных окружений.
Удаляет окружение. Использует folder-delete.bat
Если имя указано, то активирует указанное виртуальное окружение. Если запускается без аргумента, то выводит список доступных окружений.
Деактивирует виртуальное окружение в возвращается к системным библиотекам python.
Если материал понравился Вам и оказался для Вас полезным, поделитесь им со своими друзьями!
Установка нескольких версий Python в Windows с помощью Virtualenv
Вы здесь, потому что:
- Вы используете ОС Windows версии 10+
- Вы хотели бы использовать несколько версий Python на одном компьютере
- Вы устали от интернета, говорящего вам «Просто используйте Virtualenv»
TL; DR
- Откройте Command Prompt и введите pip install virtualenv
- Скачайте нужную версию python (НЕ добавляйте в PATH!) И запомните путь только что установленной версии path\to\new_python.exe
- Чтобы создать virtualenv, откройте Command Prompt и введите
virtualenv \path\to\env -p path\to\new_python.exe - Если вы используете PyCharm , обновите Project Interpreter и Code compatibility inspection .
- Чтобы установить пакеты:
(I) Активируйте virtualenv: откройте Command Prompt и введите path\to\env\Scripts\activate.bat
(II) Установите нужные пакеты
(III) Деактивируйте с помощью deactivate .
Длинная версия; Читать
пролог
Если вы используете приложение Anaconda, этот процесс может быть проще с их графическим интерфейсом. Я сам не пробовал, пожалуйста, дайте мне знать, как все прошло, если вы идете по этому пути 🙂
1. Установите virtualenv
Если у вас уже есть некоторые виртуальные среды или вы используете Anaconda, убедитесь, что следующие шаги выполняются извне всех этих сред.
2. Установите Python
Вы можете скачать Python с официального сайта, например, python3.7.3 здесь.
Файл, который вы должны загрузить, называется Windows x86–64 executable installer , или, Windows x86 executable installer если по какой-то причине вы используете 32-битные окна.
После завершения загрузки откройте исполняемый файл и появится приглашение для установки.
- Вы НЕ хотите добавлять новый python в вашу PATH, поскольку у нас будет несколько версий python на одном компьютере, и мы хотим, чтобы каждое приложение знало только одну версию python.
- Либо используйте предложенное по умолчанию местоположение для нового питона, либо укажите местоположение по вашему выбору. В любом случае, запомните это место, и давайте теперь будем обозначать его C:\ \Python37 .
3. Создать virtualenv
Откройте Command Prompt , или, если вы используете Anaconda, откройте Anaconda Prompt .
Решите , где вы хотите хранить virtualenv, например,
C:\Users\ \Anaconda3\envs\ .
4. Обновите интерпретатор PyCharm
Если вы используете PyCharm, откройте проект, над которым вы хотели бы поработать (то есть / будет написано с новой версией Python), и затем File -> Settings -> Project -> Project Interpreter нажмите значок шестеренки, а затем Add.. .
Откроется окно с подсказкой, которое позволит вам определить нового интерпретатора:
Предполагая, что вы используете проверку кода, вам может потребоваться указать PyCharm, какую версию Python проверять. Перейдите File -> Settings-> Editor -> Inspections -> Python -> Code compatibility Inspection , убедитесь, что поле вверху указывает на конкретный проект, над которым вы работаете, и отметьте поле вашей версии Python.
Если вы не видите свою версию Python в списке параметров, возможно настала пора для обновления PyCharm . да, со мной тоже случилось .
5. Установите пакеты
В настоящее время ваш virtualenv содержит только важные пакеты, pip и setuptools . Чтобы установить больше пакетов: