В чем разница между venv и virtualenv?
📁 вопрос, venv
- n
venv, это встроенный инструмент,virtualenvнужно отдельно устанавливать nvenvсоздает окружение дольше, чемvirtualenvn
Есть ли еще разница? (русскоязычных тем по этому вопросу не нашел)
Перевод с enSO с последними правками от 27.06.2021 (автор )
nПерсональные рекомендации автора оригинального ответа для новичков
nЭто персональная рекомендация от автора ответа: начните обучение с и - инструменты, которые работают с обеими версиями Python 2 и 3 и в различных ситуациях и беритесь за другие, как только они вам понадобятся.
nPyPI модули нестандартной библиотеки
n- n
- очень популярный инструмент для создания изолированного окружения для Python библиотек. Если вы еще не знакомы с данным иснтрументом, то я вам настоятельно рекомендую изучить его. Я буду сравнивать с данным инструментом до конца ответа. n
Это работает как установка группы файлов в директорию (например: env/), а затем модифицируется переменная среды PATH добавлением к ней префикса пользовательской директории bin (например: env/bin/). Точная копия бинарников python или python3 распологается в данной директории и Python запрограммирован так, что сначала ищет библиотеки относительно данного пути, в директории окружения. Данный инструмент не является частью стандартной библиотеки Python, но официально благославлена . Единожды активировав, вы можете устанавливать пакеты в виртуальное пространство, используя pip.
- n
- используется для изолирования версий python. К примеру, вы хотели бы протестировать ваш код на Python 2.7, 3.6, 3.7 и 3.8, тогда вам бы понадобилось решение для переключения между ними. После активации, к переменной окружения
PATHдобавляется~/.pyenv/shims, где находятся специальные файлы сопоставления команд Python (python,pip). Это не копии команд, поставляемых с Python, а специальные скрипты, которые на лету решают какую версию Python запустить, основываясь наPYENV_VERSION-переменной среды, либо на.python-version-файле, либо~/.pyenv/versionфайле.pyenvтак же облегчает процессы скачивания и установки нескольких версий Python при использовании командыpyenv install. n - является плагином для
pyenv, от того же автора что иpyenvи позволяет удобно использоватьpyenvиvirtualenvодновременно. Однако, если вы используете Python 3.3 или выше, тоpyenv-virtualenvбудет пробовать запускатьpython -m venv, если таковое доступно, иначеvirtualenv. Вы можете использоватьvirtualenvиpyenvвместе, безpyenv-virtualenv, если вы не нуждаетесь в удобном функционале. n - - это набор расширений к
virtualenv(см. ). У вас появляются такие команды, какmkvirtualenv,lssitepackagesи особенноworkonдля переключения между различными каталогамиvirtualenv.Этот инструмент особенно полезен, если вам нужно несколько каталоговvirtualenv. n - - это плагин для
pyenvтого же автора, для удобной интеграцииvirtualenvwrapperвpyenv. n - - стремление объеденить
Pipfile,pipиvirtualenvв одну команду в командной строке. Каталогvirtualenvобычно помещается в~/.local/share/virtualenvs/XXX, гдеXXXявляется хешем пути к каталогу проекта. Это отличает данный инструмент отvirtualenv, где директория обычно расположена в папке с проектом.pipenvпредназначен для использования при разработке приложений Python (в отличие от библиотек). Существуют альтернативыpipenv, такие как , которые я не буду здесь перечислять, поскольку этот вопрос касается только пакетов с аналогичными названиями. n
Стандартные библиотеки
n- n
- n
npyvenv(не путать с из предыдущей части) - это скрипт, поставляемый с Python 3, версиях с 3.3 по 3.7, но и был удален из Python 3.8, поскольку имелись проблемы (не говоря уж о сбивающем с толку названии). В Python 3.6+, точный эквивалент -python3 -m venv. n - n
- это пакет поставляемый с Python 3, который вы можете запустить с помощью
npython3 -m venv(хотя по некоторым причинам некоторые дистрибутивы выделяют его в отдельный пакет, такие какpython3-venvв Ubuntu/Debian). Он служит той же цели, что иvirtualenv, но имеет только подмножество его функций ().virtualenvпо-прежнему более популярен, чемvenv, тем более что первый поддерживает как Python 2, так и 3. n
Войдите чтобы оставить ответ