Документация Python неофициальный перевод
Содержание страницы

5. Дополнительные инструменты и скриптыAdditional Tools and Scripts

5.1. pyvenv – Создание виртуальных окруженийpyvenv - Creating virtual environments

Создание виртуальных окружений производится выполнением скрипта pyvenv:

pyvenv /path/to/new/virtual/environment

Выполнение этой команды создает целевой каталог (создавая все родительские каталоги, которых еще нет) и помещает в него файл pyvenv.cfg с ключом home, указывающим на установку Python, из которой была запущена команда. Она также создает подкаталог bin (или Scripts в Windows), содержащий копию двоичного файла python (или нескольких файлов в случае Windows). Также создается (изначально пустой) подкаталог lib/pythonX.Y/site-packages (в Windows это Lib\site-packages).

В Windows может потребоваться запускать скрипт pyvenv следующим образом, если не заданы соответствующие переменные PATH и PATHEXT:

c:\Temp>c:\Python34\python c:\Python34\Tools\Scripts\pyvenv.py myenv

или, что то же самое:

c:\Temp>c:\Python34\python -m venv myenv

Команда, запущенная с -h, покажет доступные параметры:

usage: venv [-h] [--system-site-packages] [--symlinks] [--clear]
            [--upgrade] [--without-pip] ENV_DIR [ENV_DIR ...]

Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR             A directory to create the environment in.

optional arguments:
  -h, --help             show this help message and exit
  --system-site-packages Give access to the global site-packages dir to the
                         virtual environment.
  --symlinks             Try to use symlinks rather than copies, when symlinks
                         are not the default for the platform.
  --copies               Try to use copies rather than symlinks, even when
                         symlinks are the default for the platform.
  --clear                Delete the environment directory if it already exists.
                         If not specified and the directory exists, an error is
                         raised.
  --upgrade              Upgrade the environment directory to use this version
                         of Python, assuming Python has been upgraded in-place.
  --without-pip          Skips installing or upgrading pip in the virtual
                         environment (pip is bootstrapped by default)

В зависимости от того, как была вызвана функциональность venv, сообщение об использовании может незначительно отличаться, например, ссылаться на pyvenv вместо venv.

Изменено в версии 3.4: Устанавливает pip по умолчанию, добавлены параметры --without-pip и --copies

Изменено в версии 3.4: В более ранних версиях, если целевой каталог уже существовал, возникала ошибка, если только не был указан параметр --clear или --upgrade. Теперь, если указан существующий каталог, его содержимое удаляется, и каталог обрабатывается так, как если бы он был только что создан.

Созданный файл pyvenv.cfg также содержит ключ include-system-site-packages, установленный в true, если venv был запущен с параметром --system-site-packages, и в false в противном случае.

Если не указан параметр --without-pip, будет вызван модуль ensurepip для установки pip в виртуальное окружение.

Можно указать несколько путей для pyvenv; в этом случае идентичное виртуальное окружение будет создано в соответствии с заданными параметрами по каждому указанному пути.

После создания venv его можно «активировать» с помощью скрипта в каталоге с исполняемыми файлами venv. Вызов скрипта зависит от платформы:

Платформа Оболочка Команда активации виртуального окружения
Posix bash/zsh $ source <venv>/bin/activate
  fish $ . <venv>/bin/activate.fish
  csh/tcsh $ source <venv>/bin/activate.csh
Windows cmd.exe C:> <venv>/Scripts/activate.bat
  PowerShell PS C:> <venv>/Scripts/Activate.ps1

Строго говоря, нет необходимости активировать окружение; активация просто добавляет каталог с исполняемыми файлами venv в начало пути, так что «python» вызывает интерпретатор Python из venv, и можно запускать установленные скрипты без указания полного пути. Однако все скрипты, установленные в venv, должны быть работоспособны и без активации, и автоматически использовать Python из venv.

Деактивировать venv можно, набрав «deactivate» в оболочке. Точный механизм зависит от платформы: например, скрипт активации Bash определяет функцию «deactivate», тогда как в Windows есть отдельные скрипты deactivate.bat и Deactivate.ps1, которые устанавливаются при создании venv.

Новое в версии 3.4: Скрипты активации для fish и csh.