Инструменты пользователя

Инструменты сайта


python:moduli:tutorial-env

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

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

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

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

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

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

Модуль, используемый для создания виртуальных сред и управления ими, называется 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, вместо них следует использовать альтернативные сценарии активации.csh и активировать.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']
>>>

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

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

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

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

$ 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

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

$ 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, чтобы обновить пакет до последней версии:

$ 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 отобразит информацию о конкретном пакете:

$ 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 отобразит все пакеты, установленные в виртуальной среде:

$ 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:

$ pip freeze > requirements.txt
$ cat requirements.txt
novas==3.1.1.3
numpy==1.9.2
requests==2.7.0

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

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
python/moduli/tutorial-env.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)