Coursera Learner working on a presentation with Coursera logo and
Coursera Learner working on a presentation with Coursera logo and

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, это может не повлиять на окружение приложения А.

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

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

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

python3 -m venv tutorial-env

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

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

Как только вы создали виртуальное окружение, вы активируете его.

На Windows, запустите:

учебник-env\Scripts\activate.bat

На Unix или MacOS, бегите:

учебное пособие-env/bin/activate

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

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

$ исходный код ~/envs/tutorial-env/bin/activate

(tutorial-env) $ питон

Питон 3.5.1 (по умолчанию, 6 мая 2016 г., 10:59:36)

>>> импорт sys

>>> sys.path

[”, ‘/usr/local/lib/python35.zip’,…,

‘~/envs/tutorial-env/lib/python3.5/site-пакеты’].

>>>

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

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

(tutorial-env) $ pip поиск астрономии

небесное поле – Элегантная астрономия для Питона

Гари – Галактическая астрономия и гравитационная динамика.

novas – Библиотека астрономии Морской обсерватории NOVAS.

астрономические эфемериды для планирования телескопических наблюдений.

PyAstronomy – набор инструментов, связанных с астрономией для Python.

pip имеет ряд подкоманд: “поиск”, “установка”, “деинсталляция”, “замораживание” и т.д. (Полную документацию для pip см. в руководстве по установке модулей Python).

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

(tutorial-env) $ pip install novas

Сбор новорожденных

Загрузка новас-3.1.1.3.tar.gz (136кБ)

Установка собранных пакетов: novas

Запущена установка setup.py для novas

Успешно установленный новас-3.1.1.3

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

(tutorial-env) $ pip install requests==2.6.0

Собираемые запросы==2.6.0

Использование кэшированных запросов-2.6.0-py2.py3-none-any.whl

Установка собранных пакетов: запросы

Успешно установленные запросы-2.6.0

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

(tutorial-env) $ pip запросы на установку –upgrade

Сбор запросов

Установка собранных пакетов: запросы

Найдено существующую установку: запросы 2.6.0

Удаление запросов-2.6.0:

Успешное удаление удалённых запросов-2.6.0

Успешно установленные запросы-2.7.0

pip деинсталляция с последующим именем одного или нескольких пакетов удалит пакеты из виртуальной среды.

pip show отобразит информацию о нескольких конкретных пакетах:

(tutorial-env) $ pip show requests

Версия метаданных: 2.0

Имя: запросы

Версия: 2.7.0

Реферат: Python HTTP для людей.

Домашняя страница: http://python-requests.org

Автор: Кеннет Райц

Авторская почта: me@kennethreitz.com

Лицензия: Apache 2.0

Местоположение: /Users/akuchling/envs/utorial-env/lib/python3.4/сайт-пакеты

Требуется:

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

(tutorial-env) $ pip list

новы (3.1.1.3)

нумизматический (1.9.2)

очко (7.0.3)

заявки (2.7.0)

инструменты настройки (16.0)

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

(tutorial-env) $ pip freeze > requirements.txt

(tutorial-env) $ cat requirements.txt

новы==3.1.1.3

numpy==1.9.2

запросы==2.7.0

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

(tutorial-env) $ pip install -r requirements.txt

Сбор обновлений==3.1.1.3 (из -r requirements.txt (строка 1))

Сбор numpy==1.9.2 (из -r requirements.txt (строка 2))

Сбор запросов==2.7.0 (из -r requirements.txt (строка 3))

Установка собранных пакетов: novas, numpy, запросы

Запущена установка setup.py для novas

Успешно установленные новас-3.1.1.3 numpy-1.9.2 заявки-2.7.0

T