Spec-Zone.ru › Python 3.9

Виртуальные среды и пакеты

12.1. Введение

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

Это означает, что одна установка Python может не удовлетворить требованиям всех приложений. Если приложению A нужна версия 1.0 определённого модуля, а приложению B нужна версия 2.0, то требования конфликтуют, и установка либо версии 1.0, либо версии 2.0 оставит одно приложение неработоспособным.

Решение этой проблемы заключается в создании виртуальной среды, самодостаточного дерева каталогов, содержащего установку Python для определённой версии Python, плюс ряд дополнительных пакетов.

Разные приложения могут затем использовать разные виртуальные среды. Для решения предыдущего примера с конфликтующими требованиями приложение A может иметь свою виртуальную среду с установленной версией 1.0, а приложение B — другую виртуальную среду с версией 2.0. Если приложению B требуется обновление библиотеки до версии 3.0, это не повлияет на среду приложения A.

12.2. Создание виртуальных сред

Модуль, используемый для создания и управления виртуальными средами, называется venv. venv обычно устанавливает последнюю доступную версию Python. Если на вашей системе есть несколько версий Python, вы можете выбрать определённую версию Python, выполнив python3 или любую другую желаемую версию.

Чтобы создать виртуальную среду, выберите каталог, в котором вы хотите её разместить, и запустите модуль venv как скрипт с путём к каталогу:

python3 -m venv tutorial-env

Это создаст каталог tutorial-env, если он не существует, а также создаст каталоги внутри него, содержащие копию интерпретатора Python, стандартную библиотеку и различные вспомогательные файлы.

Распространённым местоположением каталога для виртуальной среды является .venv. Такое имя обычно скрывает каталог в вашей оболочке, тем самым убирая его с глаз, при этом давая имя, объясняющее, для чего существует этот каталог. Это также предотвращает конфликты с файлами определения переменной среды .env, которые поддерживаются некоторыми инструментами.

После создания виртуальной среды её можно активировать.

В Windows выполните:

tutorial-env\Scripts\activate.bat

В Unix или MacOS выполните:

source tutorial-env/bin/activate

(Этот скрипт написан для оболочки bash. Если вы используете оболочки csh или fish, вместо них следует использовать альтернативные скрипты activate.csh и activate.fish.)

Активация виртуальной среды изменит приглашение вашей оболочки, чтобы показать, какую виртуальную среду вы используете, и изменит среду так, что запуск python приведет вас к конкретной версии и установке Python. Например:

$ source ~/envs/tutorial-env/bin/activate
(tutorial-env) $ python
Python 3.5.1 (default, May  6 2016, 10:59:36)
  ...
>>> import sys
>>> sys.path
['', '/usr/local/lib/python35.zip', ...,
'~/envs/tutorial-env/lib/python3.5/site-packages']
>>>

12.3. Управление пакетами с помощью pip

Вы можете устанавливать, обновлять и удалять пакеты с помощью программы pip. По умолчанию pip устанавливает пакеты с Python Package Index, <https://pypi.org>. Вы можете просмотреть Python Package Index, перейдя к нему в браузере.

pip имеет ряд подкоманд: «install», «uninstall», «freeze» и т. д. (Обратитесь к руководству Установка модулей Python для получения полной документации по pip.)

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

(tutorial-env) $ python -m pip install novas
Collecting novas
  Downloading novas-3.1.1.3.tar.gz (136kB)
Installing collected packages: novas
  Running setup.py install for novas
Successfully installed novas-3.1.1.3

Вы также можете установить определённую версию пакета, указав имя пакета, за которым следует == и номер версии:

(tutorial-env) $ python -m pip install requests==2.6.0
Collecting requests==2.6.0
  Using cached requests-2.6.0-py2.py3-none-any.whl
Installing collected packages: requests
Successfully installed requests-2.6.0

Если вы повторно выполните эту команду, pip заметит, что запрошенная версия уже установлена, и ничего не сделает. Вы можете указать другой номер версии, чтобы получить эту версию, или выполнить pip install --upgrade для обновления пакета до последней версии:

(tutorial-env) $ python -m pip install --upgrade requests
Collecting requests
Installing collected packages: requests
  Found existing installation: requests 2.6.0
    Uninstalling requests-2.6.0:
      Successfully uninstalled requests-2.6.0
Successfully installed requests-2.7.0

pip uninstall за которым следует одно или несколько имён пакетов, удалит пакеты из виртуальной среды.

pip show отобразит информацию об определённом пакете:

(tutorial-env) $ pip show requests
---
Metadata-Version: 2.0
Name: requests
Version: 2.7.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.com
License: Apache 2.0
Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages
Requires:

pip list отобразит все установленные пакеты в виртуальной среде:

(tutorial-env) $ pip list
novas (3.1.1.3)
numpy (1.9.2)
pip (7.0.3)
requests (2.7.0)
setuptools (16.0)

pip freeze создаст похожий список установленных пакетов, но вывод использует формат, ожидаемый pip install. Обычной практикой является размещение этого списка в файле requirements.txt:

(tutorial-env) $ pip freeze > requirements.txt
(tutorial-env) $ cat requirements.txt
novas==3.1.1.3
numpy==1.9.2
requests==2.7.0

Файл requirements.txt можно затем добавить в систему управления версиями и отправить как часть приложения. Пользователи могут затем установить все необходимые пакеты с помощью install -r:

(tutorial-env) $ python -m pip install -r requirements.txt
Collecting novas==3.1.1.3 (from -r requirements.txt (line 1))
  ...
Collecting numpy==1.9.2 (from -r requirements.txt (line 2))
  ...
Collecting requests==2.7.0 (from -r requirements.txt (line 3))
  ...
Installing collected packages: novas, numpy, requests
  Running setup.py install for novas
Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0

pip имеет множество других параметров. Обратитесь к руководству Установка модулей Python для получения полной документации по pip. Если вы написали пакет и хотите сделать его доступным в Python Package Index, обратитесь к руководству Распространение модулей Python.

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/tutorial/venv.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API