> **Источник:** https://python-all.ru/3.3/using/scripts.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 5. Дополнительные инструменты и скрипты

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

Создание [*виртуальных окружений*](https://python-all.ru/3.3/library/venv.html#venv-def) производится выполнением скрипта `pyvenv`:

```python
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:

```text
c:\Temp>c:\Python33\python c:\Python33\Tools\Scripts\pyvenv.py myenv
```

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

```text
c:\Temp>c:\Python33\python -m venv myenv
```

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

```text
usage: pyvenv [-h] [--system-site-packages] [--symlinks] [--clear]
              [--upgrade] 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.
  --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.
```

Если целевой каталог уже существует, будет вызвано исключение, если только не указан параметр `--clear` или `--upgrade`.

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

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

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

```text
$ source <venv>/bin/activate
```

тогда как в Windows обычно используется:

```text
C:\> <venv>/Scripts/activate
```

если используется оболочка `cmd.exe`, или:

```text
PS C:\> <venv>/Scripts/Activate.ps1
```

если используется PowerShell.

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

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