Поиск по сайту:

Общие инструменты Python: использование virtualenv, установка с помощью Pip и управление пакетами


Введение

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

В этой статье DigitalOcean мы стремимся познакомить вас не только с основами, но и с логикой популярных инструментов и элементов Python, когда мы углубимся в их использование в реальных сценариях. Мы начнем с загрузки и установки некоторых общих библиотек, настройки и работы с виртуальными средами (используя virtualenv), а также управления пакетами для разработки и производства ваших собственных приложений.

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

Python на CentOS

Помните, что если вы используете систему CentOS/RHEL, вам следует воздерживаться от работы с интерпретатором Python по умолчанию, который поставляется с операционной системой. Вместо этого вам следует выбрать установку Python самостоятельно.

Если вы еще этого не сделали и хотели бы узнать, как это сделать, ознакомьтесь с нашим руководством: Как настроить Python 2.7.6 и 3.3.3 в CentOS 6.4, прежде чем мы начнем.

Аналогичным образом, чтобы установить pip и virtualenv в CentOS с пользовательской установкой Python, вы можете следовать инструкциям в этой статье.

Python и пакеты

Хотя приложения Python могут состоять из одного файла, обычно они состоят из ряда функций, объектов (классов), удобных инструментов и, конечно же, переменных, разбросанных по нескольким файлам, размещенным внутри модулей. . Вместе эти модули составляют так называемый пакет.

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

Когда файлы будут готовы и распакованы, используя модуль distutils, вы можете установить его, вызвав setup.py:

Пример установки пакета:

 # Example: cd [package name]
 cd a_package
 python setup.py install

distutils (утилиты распространения) — это набор инструментов, используемый для упаковки и распространения кода. По умолчанию он поставляется с Python (т. е. включен в стандартную библиотеку).

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

  • Удаление (например, pip uninstall package_x),
  • Управление версиями (например, pip install django==x),
  • И автоматическое управление зависимостями (поскольку пакеты могут зависеть от других).

Управление пакетами

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

Инструменты управления пакетами

Двумя наиболее распространенными менеджерами пакетов Python являются pip и easy_install. Оба они направлены на то, чтобы помочь пользователям с задачами:

  • Скачивание, установка и удаление
  • Здание
  • Управление пакетами Python и многое другое

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

Однако в данном случае важно то, что скрыто от глаз, и многое другое.

пип против easy_install

Первым инструментом, созданным для этой задачи, был easy_install. Хотя это было облегчением и удовольствием в использовании по сравнению с выполнением всего вручную, со временем оказалось, что в некоторых аспектах это проблематично. Это создало основу для разработки pip, еще одного менеджера пакетов.

pip (как определено самим проектом) является заменой easy_install, которая дает много преимуществ по сравнению с предшественником, включая, но не ограничиваясь:

  • Загрузка всего перед установкой
  • Предоставление полезной обратной связи во время процесса.
  • Хранение истории предпринятых действий
  • Предоставление полезных сообщений об ошибках в соответствии с традицией Python
  • Дополняет virtualenv и работает с ним очень прекрасно

Чтобы узнать больше о pip, прочтите его введение, расположенное в указателе пакетов PyPI, нажав здесь.

Подробное руководство по пипсу

В этом разделе мы поговорим о получении необходимых зависимостей для pip, установке его последней сборки, а затем рассмотрим предлагаемые основные функции, такие как установка, удаление, замораживание и управление требованиями.

Когда мне следует использовать pip?

Как и было обещано во введении, мы постараемся дать вам примеры сценариев из реальной жизни.

Представьте, что вы занимаетесь разработкой небольшого приложения. Вы составили себе дорожную карту, и все идет хорошо. Затем вы обнаружите библиотеку (или модуль), которая может вам очень помочь, если вы включите ее в свое приложение. Вы можете скачать его традиционным способом, как мы объяснили. Однако, когда у вас есть не один, а 3, 4 или даже 20 пакетов, с которыми вам нужно иметь дело, этот процесс становится громоздким. Включите управление ими (например, обновление, удаление, замену, использование другой версии), вы можете увидеть проблемы, с которыми вам нужно будет справиться, которые становятся излишними с помощью pip, менеджера пакетов.

Установка пипа

Чтобы установить pip, нам сначала нужно позаботиться о его зависимостях. Не волнуйтесь, это очень легко.

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

Как объяснялось выше, одной из зависимостей pip является библиотека setuptools. Он основан на (стандартной) функциональности набора инструментов утилиты распространения Python, который называется distutils. Учитывая, что distils предоставляется по умолчанию, все, что нам нужно, — это setuptools.

Мы собираемся безопасно загрузить установочные файлы для setuptools, используя curl. cURL — это системная библиотека, которая позволяет передавать данные по различным протоколам (то есть общий язык для обмена данными между приложениями, например HTTP). Он проверит сертификаты SSL из источника и передаст данные интерпретатору Python.

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

Выполните следующую команду:

 curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -

Эта установка дает нам возможность использовать pip глобально во всей системе. Однако это не предпочтительный способ установки любого другого пакета. Рекомендуется всегда использовать автономные среды Python, virtualenv. Мы поговорим об этом в следующем разделе.

Примечание. Чтобы продолжить загрузку, вам может потребоваться явным образом получить права суперпользователя. В этом случае рассмотрите возможность использования:

 curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | sudo python -

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

Мы снова будем использовать curl для безопасной загрузки и установки установочного файла.

Выполните следующую команду:

 curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -

Папка установки по умолчанию для pip находится по адресу:

/usr/local/bin

Чтобы использовать его без указания полного пути, его необходимо добавить к PATH.

Обновление PATH:

 export PATH="/usr/local/bin:$PATH"

После выполнения этого шага мы готовы к работе с pip.

Использование пункта

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

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

pip может делать многое, но не будет ошибкой сказать, что наиболее часто используемая его функция — это установка пакетов. Есть несколько способов, которыми он может справиться с этой работой для вас.

Поиск и установка пакетов:

 # Example: pip install [package name]
 # Let's install the excellent *requests* library
 pip install requests

Поиск и установка определенной версии:

 # Example: pip install [package name]==[version]
 # Let's install version 2.0.0. of requests
 pip install requests==2.0.0

Установка с URL-адреса или репозитория VCS:

 # Example: pip install [url]
 # Let's install virtualenv
 pip install https://github.com/pypa/virtualenv/tarball/1.9.X

Установка внутри virtualenv:

 # Example: pip install [env name] [package name]
 # This will either install inside an environment, or create one
 # Let's install requests inside a virtualenv called *venv*
 pip install -E venv requests

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

Второй наиболее часто используемой функцией pip является удаление пакетов.

Удаление пакета:

 # Example: pip uninstall [package name]
 # Let's remove requests library
 pip uninstall requests 

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

Если вы думаете об удалении, чтобы установить более новую версию приложения, попробуйте обновить.

Обновление пакета:

 # Example: pip install --upgrade [package name]
 # Let's upgrade requests library
 pip install --upgrade requests

Поиск пакетов с помощью pip

Прежде чем принять решение об удалении или обновлении пакета, вам может понадобиться сначала найти его.

Ищем пакет:

 # Example: pip search [package name]
 # Let's find all django packages
 # This might take a while (there's tonnes of them!)
 pip search django

Создание списка установленных пакетов с помощью pip

Одной из самых исключительных и жизненно важных возможностей pip является возможность легко создавать списки («замораживать») установленных пакетов. Это также часто называют требованиями. В зависимости от вашей среды Python (будь то виртуальный или глобальный), pip создаст файл со списком всех пакетов, установленных с помощью одной единственной команды.

Создание нового списка («заморозка»):

Примечание. Эта команда выведет файл в текущем рабочем каталоге.

 # Example: pip freeze > [file name.ext]
 # Let's list all the packages currently installed
 pip freeze > package_list.txt

Создание списка («заморозить») поверх шаблона:

Примечание. Эта команда выведет файл в текущем рабочем каталоге.

 # Example: pip freeze -r [existing file.ext] > [filename.ext]
 # Let's append new packages installed after the last freeze
 pip freeze package_list.txt > package_list_new.txt

Установка всех пакетов из списка с помощью *pip

Когда вы работаете над приложением — предпочтительно в виртуальной среде — у вас будут установлены все его зависимости (необходимые пакеты). После извлечения их списка с помощью заморозки вы можете снова установить их с помощью install.

Установка всех пакетов из списка («заморозка»):

 # Example: pip install -r [file name.ext]
 # Let's install back all the packages from the previous example
 pip install -r package_list_new.txt

Тщательное руководство по виртуальной среде

Давайте начнем с определения того, что такое virtualenv и в какой ситуации он пригодится.

виртуальная среда:

В мире Python окружение – это папка (каталог), содержащая все, что необходимо проекту Python (приложению) для организованного изолированного запуска. Когда он запускается, он автоматически поставляется со своим собственным интерпретатором Python — копией того, который использовался для его создания — вместе со своим собственным pip.

Есть ряд проблем, которые решает virtualenv:

  • Создание новой изолированной среды для проекта Python
  • Возможность скачивания пакетов без прав администратора/sudo
  • Простая упаковка приложения
  • Создание списка зависимостей, принадлежащих одному проекту, созданному с помощью pip
  • Легкое восстановление зависимостей с помощью файла требований, созданного с помощью pip
  • Переносимость между системами

Использование virtualenv — рекомендуемый способ работы с проектами Python, независимо от того, сколько из них вы заняты. Это очень простой в использовании и отличный инструмент, чтобы иметь под рукой. Он действительно творит чудеса в сочетании с pip.

Мы начнем с установки virtualenv в системе.

Установка виртуалэнв

Чтобы установить virtualenv, мы собираемся обратиться за помощью к pip. Мы установим его как глобально доступный пакет для запуска интерпретатора Python.

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

Самый простой способ — использовать pip для поиска, загрузки и установки. Это может не предоставить вам последнюю стабильную версию.

Загрузка virtualenv с помощью pip:

 # Example: [sudo] pip install virtualenv
 sudo pip install virtualenv

Загрузка последней доступной версии с помощью curl:

Последний выпуск virtualenv1.11.X.

 # Example: [sudo] pip install [github repo]/[version]
 sudo pip install https://github.com/pypa/virtualenv/tarball/1.1.X

Использование виртуальной среды

Использование этого инструмента состоит в том, чтобы заставить его создать папку, содержащую интерпретатор Python и копию pip. После этого, чтобы работать с ним, нам нужно либо указать местоположение этого интерпретатора, либо активировать его.

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

Когда вы используете pip для создания их списка, только те, которые находятся внутри папки, будут скомпилированы в файл.

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

Создание/запуск виртуальной среды (virtualenv)

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

 # Example: virtualenv [folder (env.) name]
 # Let's create an environment called *my_app*
 virtualenv my_app

Создание среды с помощью пользовательского интерпретатора Python:

 # Example: virtualenv --python=[loc/to/python/] [env. name]
 virtualenv --python=/opt/python-3.3/bin/python my_app

Активация виртуальной среды

 # Example: source [env. name]/bin/activate
 # Let's activate the Python environment we just created
 source my_app/bin/activate

Работа с виртуальной средой без активации

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

 # Example: [env. name]/bin/python [arguments]
 my_app/bin/python python_script.py

Использование установки pip внутри среды без активации

 # Example: [env. name]/bin/pip [command] [arguements]
 # Let's install requests library without activating the env.
 my_app/bin/pip install requests

Деактивация виртуальной среды:

 # Example: deactivate
 # Let's deactivate the environment from earlier
 deactivate 

Прислано: