Коли я роблю "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, але не дає чіткої відповіді.