#python #pip #python-packaging
Вопрос:
Я установил несколько пакетов python из репозитория git в с помощью команды venv
:
python -m pip install git ssh://git@git.privateurl.com/repos/my-private-package.git
Теперь, когда я запускаю pip freeze
, пакет выглядит как пакет третьей стороны my-private-package=0.2.1
, а не как форма:
my-private-package @ git ssh://git@git.privateurl.com/repos/my-private-package.git
Как я могу заставить его отображаться как последний, чтобы при его создании requirements.txt
он легко передавался другим коллегам, которым просто нужно запустить python -m pip install -r requirements.txt
?
Я пробовал разные версии python (3.6, 3.7, 3.8). Я использую последнюю версию pip ( 21.1.2
), и я пробовал Ubuntu и Mac, но все равно воспроизвожу проблему. Самое странное, что коллега может выполнять одни и те же команды и получать правильные результаты.
Комментарии:
1. Вы пробовали обновить pip перед запуском
pip freeze
? — Вероятно, связано: PEP 610 .2. Вы упомянули, что ваш pip обновлен, я этого не читал.
Ответ №1:
Я не знаю, как/если pip freeze
это будет сделано, но вы можете использовать pip-compile
(из pip-tools
пакета), чтобы превратить requirements.in список с URL-адресом git в список требований, в котором все еще есть URL-адрес git. Приложение pip-sync
синхронизирует ваши пакеты virtualenv с пакетами, указанными в списке требований.
Ответ №2:
Возможно, возникла проблема с каталогом, содержащим информацию о яйце в пакете, который вы пытаетесь установить. Попробуйте удалить его, а затем переустановить пакет с помощью pip install -e
. Он создаст новый каталог с соответствующей информацией о яйце.