|
|||||||
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. Виртуальное окружение и пакеты
Приложения 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. Виртуальное окружение и пакеты
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|