Подтвердить что ты не робот

Почему # egg = foo при настройке pip из git repo

Когда я устанавливаю "pip install -e..." для установки из репо git, я должен указать # egg = somename или pip жалуется. Например:

pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app

Какое значение имеет эта "яйцо"?

4b9b3361

Ответ 1

per pip install -h строка "egg" - это каталог, который выставляется как часть установки

Ответ 3

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)

Ответ 4

Яйцо - это просто некий пакетный код 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", а затем установит пакет из этого исходного кода. Предполагая, что сопровождающие не ошибочно пометили свои репозитории неверно, вы можете получить нужную версию.