В этой статье я хочу поделиться инструментами для создания виртуального окружения в Python, а также разобрать их преимущества и недостатки.
Различные инструменты для создания виртуального окружения в Python
1. virtualenv
Преимущества:
Легкость модернизации с помощью pip
и работа с различными версиями Python. Также поддерживает Python 2.7+.
Недостатки:
Двоичный файл интерпретатора Python копируется в новое место расположения, в котором он будет доступен для чтения. Помимо этого, необходима отдельная установка для Python.
Примечание: virtualenv
можно использовать с virtualenvwrapper.
2. Python Environment Wrapper (pew)
pew
выступает в качестве упаковщика и используется для любой команды. Подробную информацию можно посмотреть в документации.
Преимущества:
Упрощает работу с виртуальными окружениями. С помощью этой команды можно создать новое окружение, установить список пакетов и активировать окружение.
Недостатки:
Главная проблема заключается в ограничении поддержки. Последнее изменение в коде было внесено в марте 2018, почти год назад.
3. venv
venv
также используется для установки и получения доступа к виртуальным окружениям. Приобрел популярность, начиная с Python 3.5. Здесь можно ознакомиться с документацией.
Преимущества:
Генерирует файл конфигурации, который распознается двоичным файлом Python, и не требует копирования бинарного файла в новое место. Более того, активно поддерживается со стороны разработчиков Python.
Недостатки:
Не подходит для версий Python до 3.3.
4. pipenv
Благодаря этому инструменту работа с Python и Виртуальными Окружениями выходит на новый уровень, поскольку он сочетает в себе поддержку управления пакетами и окружением. Документацию можно посмотреть здесь.
Преимущества:
Легко указать окружение, с которым вы работаете. Помимо этого, с его помощью можно создать отдельные секции для окружения, такие как production и test-development.
Недостатки:
Требует отдельной загрузки с помощью pip
.
Все эти инструменты помогут в решении проблемы. С их помощью легко создать Виртуальное Окружение. Просто выберите любой и научитесь с ним работать.
В качестве лучшего инструмента для создания виртуальных окружений я выбрал pipenv
. Рассмотрим его базовые особенности.
pipenv
Для установки pipenv
с помощью brew
используйте следующую команду.
brew install pipenv
Создание Окружения
После установки pipenv
начинается работа с окружением. Его можно создать в любой папке. Я выбрал pipenvProject
. Просто установите любой пакет внутри папки. Используем requests
. Он автоматически установит окружение и создаст Pipfile
и Pipfile.lock
.
cd pipenvProject
pipenv install requests
В директории будут созданы два файла. Pipfile
, включающий список пакетов, версию Python и прочую информацию. Файл блокировки (lock file) генерируется в качестве Pipfile.lock
.
Для активации окружения используется pipenv shell
. Теперь мы находимся в Виртуальном Окружении. Чтобы заглянуть внутрь Python и проверить наличие пакетов с помощью import requests
, используется команда python
. Если ошибок нет, это значит, что пакет успешно установлен.
Выйти из окружения можно с помощью exit
. После закрытия окружения невозможно получить доступ к пакету requests
.
Запустить команды можно прямо внутри окружения без вызова shell
. Для этого используется команда run
. Таким образом, для запуска Python можно использовать следующую команду:
pipenv run python
Совместимость с пользователями non-pipenv
Каждый раз при установке пакетов в Python мы указываем список в файле под названием requirements.txt. Затем просто запускаем приведенную ниже команду и устанавливаем все пакеты сразу.
pip install -r requirements.txt
При работе с pipenv
существует метод для создания текста к этому файлу. Просто используйте команду:
pipenv lock -r
Отобразится текст для файла requirements.txt
, который могут использовать другие.
Удаление Окружения
Окружение можно легко удалить с помощью команды pipenv —-rm
и создать снова, используя pipenv shell
.
Однако файлы в каталоге останутся на месте. Чтобы избавиться от них, нужно удалить каталог.
cd ..
rm -r pipenvProject
Заключение
Мы рассмотрели современные инструменты для создания виртуального окружения с Python, включая pew
, venv
и pipenv
, а также их преимущества и недостатки.
Бонус:
Traceback (most recent call last):
File "/usr/local/bin/pew", line 7, in <module>
from pew.pew import pew
File "/usr/local/lib/python2.7/site-packages/pew/__init__.py", line 11, in <module>
from . import pew
File "/usr/local/lib/python2.7/site-packages/pew/pew.py", line 36, in <module>
from pew._utils import (check_call, invoke, expandpath, own, env_bin_dir,
File "/usr/local/lib/python2.7/site-packages/pew/_utils.py", line 22, in <module>
encoding = locale.getlocale()[1] or 'ascii'
File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 564, in getlocale
return _parse_localename(localename)
File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 477, in _parse_localename
raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8
Если у вас появятся трудности при создании Виртуального Окружения и возникнет ошибка, то это можно легко исправить. Создайте файл .bash_profile
с командой touch
в главном каталоге. Затем откройте в редакторе (я использую vim
).
touch ~/.bash_profile
vim .bash_profile
Добавьте две следующие строки, сохраните и перезапустите терминал. Проблема решена.
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
Перевод статьи Karan Bhanot: Comparing Python Virtual Environment tools