На прошлом уроке мы установили пакет 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
Иногда пакет не хочется выкладывать на 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!
Вам ответят команда поддержки Хекслета или другие студенты.
Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Загляните в раздел «Обсуждение»:
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт