Ответ 1
A 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)$
Или используйте это, если у вас есть система Windows:
$ venv\Scripts\activate
(venv)
в приглашении оболочки позволяет узнать, какой виртуальный пользователь вы активировали, но вы можете отключить эту функцию, если вам это не нравится. Вы можете запускать все обычные команды Python, и они будут локальными для вашего virtualenv:
(venv)$ pip install requests numpy
[...]
(venv)$ python
[...]
>>> import requests
>>> import numpy as np
>>>
python
запустит версию Python, которую вы установили в свой virtualenv, поэтому (например) вам не нужно набирать python3
, чтобы получить Python 3. Находящийся на нем 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
.