Более быстрая установка pip из git URI

У меня есть веб-приложение Django, которое устанавливает некоторые требования через Pip из файла require.txt.

Я изначально написал свои сценарии развертывания для запуска pip install -r requirements.txt каждый раз, когда я развертывал, я не мог изменить файл require.txt в коммите, который я развертывал. Это не сильно повлияло на производительность (с точки зрения времени, необходимого для развертывания), потому что все пакеты были на PyPI, а Pip выполняет интеллектуальное кэширование и не загружает пакеты, которые у меня уже есть каждый раз.

Однако недавно я перешел на использование некоторых пакетов, которых еще нет в PyPI - только на Github. Я могу установить их, добавив строки, подобные следующим, в мой файл require.txt:

-e git+git://github.com/BowdoinOrient/django-storages-py3.git#egg=django-storages-py3
-e git+git://github.com/BowdoinOrient/topia.termextract.git#egg=topia.termextract

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

Я думал, что смогу помешать Пипу сделать это, указав точные коммиты, которые я хочу установить, вот так:

-e git+git://github.com/BowdoinOrient/django-storages-py3.git@83f18f5ccf39b5be230c6fc24d3b0b35c98277db#egg=django-storages-py3
-e git+git://github.com/BowdoinOrient/topia.termextract.git@2effd5f7274fb962292503d6d16938e68497059e#egg=topia.termextract

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

Есть ли способ ускорить Пип до этих шагов? Или что-то еще, кроме Pip, которое я должен использовать быстрее? Я посмотрел на керлинг, но не думаю, что это то, что мне нужно.

Спасибо!

1 ответ

Решение

Исправлена ​​моя собственная проблема: удаление -e (--editable) флаг из строк VCS в файле needs.txt удерживает pip от клонирования, если они уже существуют с правильным хэшем коммита.

Документация по пунктам -e флаг.

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

Другие вопросы по тегам