Когда я устанавливаю "pip install -e..." для установки из репо git, я должен указать # egg = somename или pip жалуется. Например:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
Какое значение имеет эта "яйцо"?
Когда я устанавливаю "pip install -e..." для установки из репо git, я должен указать # egg = somename или pip жалуется. Например:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
Какое значение имеет эта "яйцо"?
per pip install -h строка "egg" - это каталог, который выставляется как часть установки
Вам нужно включить # egg = Package, так что пип знает, чего ожидать по этому URL. См. https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support
https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support говорит:
Компонент "имя проекта" суффикса URL "egg = -" используется pip в логике зависимостей для идентификации проекта перед загрузкой pip и анализа метаданных. Необязательный компонент "версия" имени яйца не является функционально важным. Он просто предоставляет понятную человеку информацию о том, какая версия используется. Для проектов, где setup.py не находится в корне проекта, используется компонент "подкаталог". Значением компонента "подкаталог" должен быть путь, начинающийся с корневого каталога проекта, где находится файл setup.py.
Из этого я делаю вывод, что значение egg используется только для проверки зависимостей, и поэтому я считаю, что по соглашению следует использовать имя пакета (то есть some-pypi-package-name
), а не какую-либо содержащуюся в нем папку (то есть some_pypi_package_name
)
Яйцо - это просто некий пакетный код Python. В git url яйцо - это имя проекта. Поддержка VCS
Обычно мы устанавливаем пакеты Python из Pypi, поэтому вы указываете ТОЛЬКО имя пакета и версию (или она предполагает последнюю версию, если вы не укажете). Затем Pypi ищет, какое яйцо вы хотите, и pip устанавливает его. pip install celery
установит последние опубликованные яйца и pip install celery[redis]
установит другое яйцо, содержащее тот же пакет сельдерея, а также установит последние яйца из любых пакетов, перечисленных в качестве зависимостей для redis в celery setup.py.
Используя пути git и gitlab, вы указываете //{user|group}/{repository}[email protected]{tag}#egg={package-name}
. есть разница между #egg=celery
и #egg=celery[redis]
, но они оба будут взяты из одного и того же исходного кода.
"Тег" также может быть хэшем ветки или коммита в дополнение к фактическому тегу. Предполагается, что это master
если вы не укажете.
например, git+https://github.com/celery/celery.git#egg=celery==4.3.0
проверит основную ветку и установит ее. Даже если вы указали номер версии, он не учитывается при установке. Номер версии игнорируется
При установке через git или другие URL-адреса VCS вы захотите найти тег или хэш нужной версии. Например, git+https://github.com/celery/[email protected]#egg=celery
который извлечет коммит с тегом "v4.3.0", а затем установит пакет из этого исходного кода. Предполагая, что сопровождающие не ошибочно пометили свои репозитории неверно, вы можете получить нужную версию.