Чому # egg = foo при встановленні піп з git repo


95

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

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

Яке значення має ця «яєчна» нитка?


Ця частина pip installдокументації говорить про #egg=name, але не дає чіткої відповіді.
Крістіан Лонг

Відповіді:


35

за pip install -h рядок "egg" - це каталог, який перевіряється як частина інсталяції


12
Чи може це просто збігатися з сховищем? Чи мають значення справи?
CMCDragonkai

14
"Каталог, який перевіряється"? То чи вводити назву філії? Щось вигадувати?
Кріс

1
Якщо ви створили власний пакет Python, під час запуску setuptools project-name.egg-info/top_level.txtслід було створити каталог з іменем . Використовуйте вміст цього файлу як значення eggпараметра.
dspacejs

2
Здається, я не можу зрозуміти, чи egg=...дійсно обстановка має значення. Пакет, який я встановлюю, містить кілька записів у файлі top_level.txt. Я експериментував із nameпристосуванням його до кваргу, який використовує сценарій, setup.pyале також довільного значення. Результати, здається, однакові в будь-якому випадку. Зверніть увагу, що я встановлюю за допомогою pip install https://...синтаксису, який не вимагає -e.
Тейлор Едмістон,

7

Ви повинні включити # egg = Package, щоб pip знав, чого очікувати від цієї URL-адреси. Див. Https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

докладніше про яйця


19
Що це означає "отже, піп знає, чого очікувати за цією адресою?" Чи є щось інше, ніж #egg, що дійсно додається до такої URL-адреси?
Lorin Hochstein

Мені насправді подобається відповідь Вілла від pip install -h, Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)я не впевнений, що він використовується деінде ...
Skylar Saveland

Він клонований, але не встановлений :(
Холмс

6

https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support говорить:

Компонент "назва проекту" суфікса url "egg = -" використовується pip у своїй логіці залежностей для ідентифікації проекту до завантаження та аналізу метаданих pip. Необов'язковий компонент "версія" назви яйця функціонально не важливий. Він просто дає зрозумілий для людини підказку щодо того, яка версія використовується. Для проектів, у яких setup.py відсутній у корені проекту, використовується компонент "підкаталог". Значення компонента "підкаталог" має бути шляхом, що починається від кореня проекту до місця, де знаходиться setup.py.

З цього я висновую, що значення яйця використовується лише для перевірки залежностей, і тому я думаю, що за домовленістю some-pypi-package-nameслід використовувати ім'я пакета (тобто ), а не будь-яку вміщену папку (тобто some_pypi_package_name)


5

Яйце - це лише якийсь пітон-код, що входить до комплекту . У git-адресі яйце - це назва проекту. Підтримка VCS

Зазвичай ми встановлюємо пакети python з Pypi, тож ви вказуєте ТІЛЬКИ ім'я та версію пакета (або він передбачає останню версію, якщо ви не вказали). Потім Pypi шукає, яке яйце ви хочете, і pip встановлює це. pip install celeryвстановив би останнє опубліковане яйце та pip install celery[redis]встановив інше яйце, яке містить той самий пакет селери, а також інсталює найновіші яйця з усіх пакунків, перелічених як залежності для redis у селері setup.py.

Ви визначаєте шляхи git та gitlab /{user|group}/{repository}.git@{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/celery.git@v4.3.0#egg=celeryякий перевірить коміт із тегом "v4.3.0", а потім встановить пакет із цього вихідного коду. Якщо припустити, що супровідники не надто неправильно помітили теги своїх сховищ, ви можете отримати потрібну версію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.