аватар question@mail.ru · 01.01.1970 03:00

В чем разница между venv и virtualenv?

    n
  1. venv, это встроенный инструмент, virtualenv нужно отдельно устанавливать
  2. n
  3. venv создает окружение дольше, чем virtualenv
  4. n
n

Есть ли еще разница? (русскоязычных тем по этому вопросу не нашел)

аватар answer@mail.ru · 01.01.1970 03:00

Перевод с enSO с последними правками от 27.06.2021 (автор )

n

Персональные рекомендации автора оригинального ответа для новичков

n

Это персональная рекомендация от автора ответа: начните обучение с и - инструменты, которые работают с обеими версиями Python 2 и 3 и в различных ситуациях и беритесь за другие, как только они вам понадобятся.

n

PyPI модули нестандартной библиотеки

n
    n
  • очень популярный инструмент для создания изолированного окружения для Python библиотек. Если вы еще не знакомы с данным иснтрументом, то я вам настоятельно рекомендую изучить его. Я буду сравнивать с данным инструментом до конца ответа.
  • n
n

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

n
    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
  • n

    pyvenv (не путать с из предыдущей части) - это скрипт, поставляемый с Python 3, версиях с 3.3 по 3.7, но и был удален из Python 3.8, поскольку имелись проблемы (не говоря уж о сбивающем с толку названии). В Python 3.6+, точный эквивалент - python3 -m venv.

    n
  • n
  • n

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

    n
  • n

Последние

Похожие