В чем разница между venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv и т. Д.?

Python 3.3 включает в свою стандартную библиотеку новый пакет venv . Что он делает и как он отличается от всех других пакетов, которые, похоже, соответствуют регулярному выражению (py)?(v|virtual|pip)?env ?

  • Невозможно установить virtualenvwrapper на OSX 10.11 El Capitan
  • Запуск несистемного Python с virtualenv в 32-битном режиме на OS X
  • деактивировать конфликт в virtualenvwapper и anaconda
  • Использование различных версий python с virtualenvwrapper
  • Как изменить приглашение по умолчанию virtualenv?
  • Установленный virtualenv и virtualenvwrapper: Python говорит, что ни один модуль с именем virtualenvwrapper
  • Нет модуля с именем «virtualenvwrapper»
  • Как установить virtualenv для crontab?
  • One Solution collect form web for “В чем разница между venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv и т. Д.?”

    Пакеты PyPI не входят в стандартную библиотеку:

    • virtualenv – очень популярный инструмент, который создает изолированные среды Python для библиотек Python. Если вы не знакомы с этим инструментом, я настоятельно рекомендую изучить его, так как это очень полезный инструмент, и я буду сравнивать его с остальной частью этого ответа.

      Он работает, устанавливая кучу файлов в каталоге (например: env/ ), а затем изменяя PATH среды PATH чтобы префикс ее с помощью специального каталога bin (например: env/bin/ ). Точная копия двоичного python3 python или python3 помещается в этот каталог, но Python запрограммирован на поиск библиотек по отношению к первому пути в каталоге среды. Он не является частью стандартной библиотеки Python, но официально благословлен PyPA (Python Packaging Authority). После активации вы можете устанавливать пакеты в виртуальной среде с помощью pip .

    • pyenv используется для изоляции версий Python. Например, вы можете протестировать свой код на Python 2.6, 2.7, 3.3, 3.4 и 3.5, так что вам понадобится способ переключения между ними. После активации он ~/.pyenv/shims PATH среды PATH с помощью ~/.pyenv/shims , где есть специальные файлы, соответствующие командам Python ( python , pip ). Это не копии команд, отгруженных Python; это специальные скрипты, которые на лету решают, какую версию Python запускать на PYENV_VERSION переменной среды PYENV_VERSION , или .python-version , или файла ~/.pyenv/version . pyenv также упрощает процесс загрузки и установки нескольких версий Python, используя команду pyenv install .

    • pyenv-virtualenv – это плагин для pyenv того же автора, что и pyenv , чтобы вы могли одновременно использовать pyenv и virtualenv . Однако, если вы используете Python 3.3 или более поздней pyenv-virtualenv , pyenv-virtualenv попытается запустить python -m venv если он доступен, а не virtualenv . Вы можете использовать virtualenv и pyenv вместе без pyenv-virtualenv , если вы не хотите удобных функций.

    • virtualenvwrapper – это набор расширений для virtualenv (см. документы ). Он дает вам команды вроде mkvirtualenv , lssitepackages и особенно workon для переключения между различными каталогами virtualenv . Этот инструмент особенно полезен, если вам нужно несколько каталогов virtualenv .

    • pyenv-virtualenvwrapper – это плагин для pyenv того же автора, что и pyenv , чтобы удобно интегрировать virtualenvwrapper в pyenv .

    • pipenv , автор Kenneth Reitz (автор requests ), является совершенно новым (возможно, экспериментальным) проектом, целью которого является объединение Pipfile, pip и virtualenv в одну команду в командной строке.

    Стандартная библиотека:

    • pyvenv – это сценарий, поставляемый с Python 3, но устаревший в Python 3.6, поскольку у него были проблемы (не говоря уже о запутанном имени). В Python 3.6+ точным эквивалентом является python3 -m venv .

    • venv – это пакет, поставляемый с Python 3, который вы можете запустить с помощью python3 -m venv (хотя по какой-то причине некоторые дистрибутивы разделяют его на отдельный дистрибутив, такой как python3-venv на Ubuntu / Debian). Он служит аналогичной цели для virtualenv и работает очень схожим образом, но ему не нужно копировать двоичные файлы Python (кроме Windows). Используйте это, если вам не нужно поддерживать Python 2. На момент написания письма сообщество Python, похоже, было довольным virtualenv и я не слышал много разговоров о venv .

    Python - лучший язык программирования в мире.