Что такое virtualenv, и почему я должен использовать его?

Я пытаюсь установить пакет Python с этой командой

pip install <name of package> 

Я получаю ошибки разрешения, и я не уверен, почему. Я мог бы запустить его с помощью sudo , но кто-то сказал мне, что это плохая идея, и вместо этого я должен использовать virtualenv.

Что такое виртуальный? Что он делает для меня?

2 Solutions collect form web for “Что такое virtualenv, и почему я должен использовать его?”

Virtualenv – это легкая, автономная установка Python. Они предназначены для установки с минимумом суеты и «просто работать», не требуя обширной конфигурации или специализированных знаний.

В Python 3.3 или более поздней версии вы можете создать virtualenv следующим образом:

 $ python3 -m venv ENV_DIR 

Для Windows вы должны заменить python3 на полный путь к python.exe:

 >C:\Python34\python.exe -m venv ENV_DIR 

(Это типичная установка Python, ваша система может отличаться.)

В более старых версиях Python, включая Python 2, одна из следующих команд должна работать в большинстве случаев:

 $ virtualenv ENV_DIR $ venv ENV_DIR $ pyvenv ENV_DIR $ pyvenv3 ENV_DIR 

ENV_DIR должен быть несуществующим каталогом. Каталог может иметь любое имя, но чтобы эти инструкции были простыми, я предположим, что вы создали свой virtualenv в каталоге с именем venv (например, с python3 -m venv ./venv ).

Чтобы работать в вашем виртуальном каталоге, вы активируете его:

 $ . ./venv/bin/activate (venv)$ 

(venv) в командной строке позволяет узнать, какой виртуальный пользователь вы активировали, но вы можете отключить эту функцию, если вам это не нравится. Вы можете запускать все обычные команды Python, и они будут локальными для вашего virtualenv:

 (venv)$ pip install requests numpy [...] (venv)$ python [...] >>> import requests >>> import numpy as np >>> 

python запускает версию Python, которую вы установили в свой virtualenv, поэтому (например) вам не нужно вводить python3 для получения Python 3. python3 Python будет иметь доступ ко всем стандартным библиотечным модулям и всем пакетам вы установили в virtualenv, но (по умолчанию) ни один из пакетов, установленных в общесистемном каталоге site-packages .

Последнее правило важно: ограничивая использование виртуальных серверов только локально установленными пакетами, вы можете гарантировать, что вы точно контролируете зависимости, которые использует ваш проект, даже если на следующей неделе будет установлен или обновлен какой-либо новый общесистемный пакет. Если хотите, вы можете получить список установленных пакетов:

 (venv)$ pip freeze requests==2.13.0 numpy==1.12.0 (venv)$ 

pip также может разобрать этот формат и установить из него, и он будет устанавливать те же версии, даже если обновления были выпущены в то же время:

 (venv)$ pip freeze >requirements.txt (some-other-venv)$ pip install -r requirements.txt [...] (some-other-venv)$ python >>> import requests >>> import numpy as np >>> 

Вы можете выйти из virtualenv, отключив его:

 (venv)$ deactivate $ python [...] >>> import requests Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'requests' 

Вы можете создать столько виртуальных, сколько захотите, и они не будут мешать друг другу и вашим системным пакетам. Virtualenv – это «просто» каталог с кучей бинарных файлов и скриптов под ним, поэтому вы можете удалить virtualenv так же, как вы удалите любую директорию ( rm -r venv в Unix). Если virtualenv активируется, когда вы его удаляете, вы можете запутать свою оболочку, поэтому, вероятно, лучше сначала deactivate .

Иногда вам не предоставляются привилегии root, и вы можете не использовать sudo. Во многих других случаях не рекомендуется использовать sudo для установки пакетов, поскольку он может перезаписать некоторый пакет, который может использоваться некоторыми другими приложениями.

Virtualenv может помочь вам создать отдельную среду, в которой вам не нужны привилегии root, а также сможете адаптировать среду в соответствии с вашими потребностями. Он состоит из автономной установки python, которая взаимодействует только с вашей конкретной созданной средой.

Таким образом, в основном это дает вам немного свободы, а также предотвращает повреждение (или изменение) корневой среды, в которой могут размещаться многие старые функции старых приложений.

Установка довольно проста.

  • Как установить PyGreSQL с помощью Virtualenv на Mac OS Sierra
  • Как обновить сам пипс внутри моей виртуальной среды?
  • Установить pysvn в virtualenv
  • Включая глобальный пакет в virtualenv, который был создан с -no-site-пакетами
  • PyDev Неопределенная переменная из ошибки импорта
  • Тест-драйв Django не работает в virtualenv на Ubuntu
  • Как я могу использовать pywin32 с virtualenv без необходимости включать папку узлов сайта хост-среды?
  • Как мне заставить virtualenvwrapper и cygwin сотрудничать?
  • Python - лучший язык программирования в мире.