Когда я выполняю «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" - это каталог, который извлекается как часть установки
project-name.egg-info/top_level.txt
должен был быть создан каталог с именем . Используйте содержимое этого файла в качестве значения egg
параметра.
egg=...
действительно ли имеет значение настройка. Пакет, который я устанавливаю, имеет несколько записей в файле top_level.txt. Я экспериментировал с сопоставлением его с name
kwarg, в котором используется скрипт, setup.py
но также с произвольным значением. Результаты кажутся одинаковыми в любом случае. Обратите внимание, что я устанавливаю, используя pip install https://...
синтаксис, который не требует -e
.
Вы должны включить # egg = Package, чтобы pip знал, чего ожидать от этого URL. См. Https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support
pip install -h
, Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)
я не уверен, что он используется где-то еще ...
https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support говорит:
Компонент «имя проекта» суффикса URL-адреса «egg = -» используется pip в своей логике зависимостей для идентификации проекта до загрузки pip и анализа метаданных. Необязательный компонент «версия» в имени яйца не имеет функционального значения. Он просто дает понятную подсказку о том, какая версия используется. Для проектов, где setup.py не находится в корне проекта, используется компонент «подкаталог». Значением компонента «subdirectory» должен быть путь, начинающийся от корня проекта до места, где находится setup.py.
Из этого я делаю вывод, что значение яйца используется только для проверки зависимостей, и поэтому я думаю, что по соглашению some-pypi-package-name
следует использовать имя пакета (т.е. ), а не какую-либо содержащуюся папку (т.е. some_pypi_package_name
)
Яйцо - это просто какой-то связанный код Python . В URL-адресе git яйцо - это имя проекта. Поддержка VCS
Обычно мы устанавливаем пакеты python из Pypi, поэтому вы указываете ТОЛЬКО имя и версию пакета (или предполагается последняя версия, если вы не указываете). Затем Pypi ищет, какое яйцо вы хотите, и устанавливает его. pip install celery
установит последнее опубликованное яйцо и pip install celery[redis]
установит другое яйцо, которое содержит тот же пакет сельдерея, а также установит последние яйца из тех пакетов, которые были указаны как зависимости для redis в файле setup.py celery.
Укажите пути git и gitlab /{user|group}/{repository}.git@{tag}#egg={package-name}
. между #egg=celery
и есть разница #egg=celery[redis]
, но они оба происходят из одного и того же исходного кода.
«tag» также может быть хешем ветки или фиксации в дополнение к фактическому тегу. Предполагается, что будет, master
если вы не укажете.
например, можно git+https://github.com/celery/celery.git#egg=celery==4.3.0
было бы проверить главную ветку и установить ее. Даже если вы указали номер версии, он не учитывается при установке. НОМЕР ВЕРСИИ ИГНОРИРУЕТСЯ
При установке через git или другие URL-адреса VCS вам нужно будет найти тег или хэш нужной вам версии. Например, git+https://github.com/celery/celery.git@v4.3.0#egg=celery
при проверке фиксации с тегом «v4.3.0» и последующей установке пакета из этого исходного кода. Предполагая, что сопровождающие не допустили грубого нарушения тегов в своих репозиториях, вы можете получить желаемую версию таким образом.
pip install
документации говорится#egg=name
, но нет четкого ответа.