Коли я роблю "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
Яке значення має ця «яєчна» нитка?
Відповіді:
за pip install -h рядок "egg" - це каталог, який перевіряється як частина інсталяції
project-name.egg-info/top_level.txt
слід було створити каталог з іменем . Використовуйте вміст цього файлу як значення egg
параметра.
egg=...
дійсно обстановка має значення. Пакет, який я встановлюю, містить кілька записів у файлі top_level.txt. Я експериментував із name
пристосуванням його до кваргу, який використовує сценарій, 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 відсутній у корені проекту, використовується компонент "підкаталог". Значення компонента "підкаталог" має бути шляхом, що починається від кореня проекту до місця, де знаходиться setup.py.
З цього я висновую, що значення яйця використовується лише для перевірки залежностей, і тому я думаю, що за домовленістю some-pypi-package-name
слід використовувати ім'я пакета (тобто ), а не будь-яку вміщену папку (тобто some_pypi_package_name
)
Яйце - це лише якийсь пітон-код, що входить до комплекту . У 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", а потім встановить пакет із цього вихідного коду. Якщо припустити, що супровідники не надто неправильно помітили теги своїх сховищ, ви можете отримати потрібну версію.
pip install
документації говорить про#egg=name
, але не дає чіткої відповіді.