Установите библиотеку Python, используя ссылку на репозиторий Git вместо индекса пакета.

Знаете ли вы, что вы можете установить библиотеку Python, используя ссылку на репозиторий Git вместо индекса пакета?

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

Почему вы хотите установить pip из репозитория Git?

  1. Возможно, вы захотите быстро протестировать какой-нибудь код от коллеги.
  2. У вас может быть библиотека, которую вы хотите использовать в нескольких проектах, но это не гарантирует создания пакета Python.
  3. Вы внесли исправление в сторонний проект и не можете дождаться объединения и развертывания запроса на вытягивание. Вы можете использовать свою вилку, а затем переключиться на официальный релиз позже.

Как установить pip из репозитория Git

Если это новое репо, вам как минимум понадобится setup.py, чтобы pip мог выполнить установку. Кроме этого, все сводится к предоставлению pip URL-адреса репозитория Git.

# You'll want to do something in the form of
pip install git+<repository_url>
# For example
pip install git+https://github.com/matiascodesal/git-for-pip-example.git
# Check that it worked
python -c "import greetings;greetings.hello()"

Вы можете явно вызвать имя пакета, который вы устанавливаете, с помощью #egg=

# The syntax
pip install git+<repository_url>#egg=<package_name>
# Explicit package name example
pip install git+https://github.com/matiascodesal/git-for-pip-example.git#egg=git-for-pip-example

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

# Use a commit SHA
pip install git+https://github.com/matiascodesal/git-for-pip-example.git@4045597#egg=git-for-pip-example
# Use a tag
pip install git+https://github.com/matiascodesal/[email protected]#egg=git-for-pip-example
# Use a branch called "GreetingArg"
pip install git+https://github.com/matiascodesal/git-for-pip-example.git@GreetingArg#egg=git-for-pip-example

Как включить зависимость в файле requirements.txt

Если зависимость от репозитория Git будет использоваться в проекте не только для тестирования, вы, вероятно, захотите добавить ее в файл requirements.txt. Существует ошибка с «замораживанием пипсов», из-за которой зависимость репозитория Git не выводилась «замораживанием пипсов». Это было только недавно исправлено в пункте 20.1. Я покажу вам обходной путь для старых версий pip и новый способ перечисления зависимостей. Обходной путь для более старых версий pip — использовать флаг -e или — editable:

# The pip command with "-e"
pip install -e git+https://github.com/matiascodesal/[email protected]#egg=my-git-package
# What that should look like in your requirements.txt
packageA==1.2.3
-e https://github.com/matiascodesal/[email protected]#egg=my-git-package
packageB==4.5.6

Для pip 20.1 или новее вам больше не нужен флаг -e:

# Just put the pip install argument straight into your requirements.txt
packageA==1.2.3
git+https://github.com/matiascodesal/[email protected]#egg=my-git-package
packageB==4.5.6
# Or you can use the preferred PEP 440 direct URL syntax
packageA==1.2.3
git-for-pip-example @ git+https://github.com/matiascodesal/[email protected]
packageB==4.5.6

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

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.