MyTetra Share
Делитесь знаниями!
12. Виртуальное окружение и пакеты
Время создания: 29.07.2019 23:51
Раздел: Разные закладки - Python - Перевод документации Python 3.x - 1. Документация
Запись: xintrea/mytetra_db_adgaver_new/master/base/1515942872o1tft4p4zb/text.html на raw.githubusercontent.com

12. Виртуальное окружение и пакеты

  • 12.1. Введение
  • 12.2. Создание виртуального окружения
  • 12.3. Управление пакетами с помощью pip


12.1. Введение

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

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

Решением этой проблемы является создание virtual environment (docs.python.org/3/glossary.html#term-virtual-environment), автономного дерева директорий, которое содержит инсталляцию Python для конкретной версии Python, плюс ряд дополнительных пакетов.

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

12.2. Создание виртуального окружения

Модуль, используемый для создания и управления виртуальными средами, называется venv (docs.python.org/3/library/venv.html#module-venv). Он обычно будет установлен большинством новых версий Python, которые вам доступны. Если вы имеете разные версии Python в вашей системы, то можете выбрать конкретную версию Python, выполнив команду python3 или какую версию захотите.

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

python3 -m venv tutorial-env

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

Создав виртуальную среду, вы можете ее активировать.

В 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 . Вы можете просматривать Python Packege Index с помощью браузера или можете использовать ограниченную функцию поиска pip:

(tutorial-env) $ pip search astronomy

skyfield - Elegant astronomy for Python

gary - Galactic astronomy and gravitational dynamics.

novas - The United States Naval Observatory NOVAS astronomy library

astroobs - Provides astronomy ephemeris to plan telescope observations

PyAstronomy - A collection of astronomy related tools for Python.

...

У pip есть ряд подкоманд: "search", "install", "freeze" и др. (Проконсультируйтесь с руководством Installing Python Modules (docs.python.org/3/installing/index.html#installing-index) для полной документации для pip.)

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

(tutorial-env) $ 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) $ 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) $ 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) $ 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 Packege Index, проконсультируйтесь с руководством Distributing Python Modules (docs.python.org/3/distributing/index.html#distributing-index).

Создано

2017-06-18

  • Добавить комментарий

Перекрёстные ссылки книги для 12. Виртуальное окружение и пакеты

  • 11. Краткий обзор стандартной библиотеки - Часть II
  • Вверх
  • 13. Что теперь?
Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования