Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Инструмент pip и альтернативные источники пакетов Python: Настройка окружения

Ранее в курсе мы установили пакет cowsay. Если не уточнить иное, то pip устанавливает пакеты из основного индекса — PyPI. Оттуда был взят и пакет cowsay.

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

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

Альтернативные индексы пакетов

Если вызывать команду pip install с опцией --index-url <url>, то pip будет искать пакет и все его зависимости в индексе по указанному url-адресу. Давайте попробуем установить пакет из специального тренировочного индекса Test PyPI:

Заметьте, что url-адрес индекса указан в виде что-то-там/simple — именно так по соглашению должны именоваться индексы.

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

У pip и для такого случая есть опция: можно в дополнение к --index-url указать --extra-index-url <url>. В такой конфигурации pip ищет каждый пакет в первом индексе, а если не найдет, то обращается к дополнительному индексу. Команда целиком может выглядеть так:

python3 -m pip install --user --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple dogesay

Установка пакетов из репозиториев на GitHub

Иногда пакет не хочется выкладывать на PyPI. Например, когда все еще сырой пакет нужно проверить и попробовать установить. В подобных случаях пакеты устанавливают прямо из git-репозиториев. Давайте установим с помощью pip наш учебный hexlet-boilerplates/python-package:

Этот пакет установится, только если у вас pip версии 20 и выше. Если вы увидите ошибку при установке пакета, попробуйте обновить сам pip такой командой:

python3 -m pip install --user --upgrade pip

Здесь вместо имени пакета указывается тот же url-адрес, который вы использовали бы при клонировании репозитория, но дополненный приставкой git+. Эта приставка подсказывает pip, что по url-адресу расположен Git-репозиторий — не обязательно размещенный на GitHub.

Во время установки пакета pip вызывает git clone, чтобы клонировать репозиторий во временную директорию. Если репозиторий закрытый, то понадобится ввести имя пользователя и пароль для доступа к репозиторию. Это работает и с приватными репозиториями GitHub.

Вообще pip поддерживает не только Git, но и другие системы контроля версий. Управлять установкой пакетов из этих систем можно очень гибко — например, можно указывать ветки, теги или хеши коммитов, по которым расположена желаемая версия пакета. Подробнее можно почитать в документации.

Выводы

Мы рассмотрели далеко не все виды источников пакетов, да и саму команду pip install рассмотрели очень поверхностно. По возможности рекомендуем изучить эту и прочие команды pip самостоятельно во всех подробностях, ведь pip — один из ключевых инструментов разработчика на Python.


Дополнительные материалы

  1. pip — The Python Package Installer
  2. Test PyPI
  3. Python package example (boilerplate)

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

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

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 18 апреля
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 18 апреля

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»