Шаг 201.
Python: сборник рецептов.
Модули и пакеты. Создание нового окружения Python

    На этом шаге мы рассмотрим решение поставленной задачи.

Задача

    Вам нужно создать новое окружение Python, в котором вы хотите устанавливать модули и пакеты. Однако вы хотите сделать это без установки новой копии Python или внесения изменений, которые повлияют на системный Python.

Решение

    Вы можете создать новое "виртуальное" окружение, используя команду pyvenv. Эта команда установлена в тот же каталог, что и интерпретатор Python, или на Windows, в каталог Scripts. Вот пример:

bash % pyvenv Spam 
bash %

    Имя, предоставленное в pyvenv, станет именем нового каталога. После создания каталог Spam будет выглядеть как-то так:

bash % cd Spam 
bash % ls
bin include lib pyvenv.cfg 
bash %

    В каталоге bin вы найдете интерпретатор Python, который можете использовать. Например:

bash % Spam/bin/python3
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license()" for more information.
>>> from pprint import pprint
>>> import sys
>>> pprint(sys.path)
['',
 'C:\\Python38\\Lib\\idlelib',
 'C:\\Python38\\python38.zip',
 'C:\\Python38\\DLLs',
 'C:\\Python38\\lib',
 'C:\\Python38',
 'C:\\Python38\\lib\\site-packages']
>>>

    Главная особенность этого интерпретатора в том, что его каталог site-packages установлен в качестве нового окружения. Если вы захотите установить сторонние пакеты, они будут установлены сюда, а не в системный каталог site-packages.

Обсуждение

    Создание виртуального окружения по большей части применяется для установки и управления сторонними пакетами. Как вы можете видеть в примере, переменная sys.path содержит каталоги обычного системного Python, но каталог site-packages теперь другой.

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

    Хотя виртуальное окружение может выглядеть как копия инсталляции Python, оно на самом деле состоит всего из нескольких файлов и символических ссылок. Все файлы стандартной библиотеки и исполняемые файлы интерпретатора приходят из изначальной инсталляции Python. Так что виртуальные окружения не только просты в создании, но и почти не тратят системных ресурсов.

    По умолчанию виртуальные окружения полностью чисты и не содержат сторонних пакетов. Если вы хотите включить уже установленные пакеты в виртуальное окружение, создайте его с опцией --system-site-packages. Например:

bash % pyvenv --system-site-packages Spam 
bash %

    Дополнительную информацию о pyvenv и виртуальных окружениях вы найдете в PEP 405.

    На следующем шаге мы рассмотрим распространение пакетов.




Предыдущий шаг Содержание Следующий шаг