Как "egg =" используется в "pip install -e"? - PullRequest
2 голосов
/ 10 июля 2020
• 1000 от меня:
root@6be8ee41b6c9:/# pip3 install -e git+https://gitlab.com/jame/clientapp.git      
Could not detect requirement name for 'git+https://gitlab.com/jame/clientapp.git', please specify one with #egg=your_package_name

root@6be8ee41b6c9:/# pip3 install -e git+https://gitlab.com/jame/clientapp.git#egg=
Could not detect requirement name for 'git+https://gitlab.com/jame/clientapp.git#egg=', please specify one with #egg=your_package_name

root@6be8ee41b6c9:/# pip3 install -e git+https://gitlab.com/jame/clientapp.git#egg=e
Obtaining e from git+https://gitlab.com/jame/clientapp.git#egg=e
  Cloning https://gitlab.com/jame/clientapp.git to /src/e
  Running setup.py (path:/src/e/setup.py) egg_info for package e produced metadata for project name clientapp. Fix your #egg=e fragments.
Installing collected packages: clientapp
  Found existing installation: ClientApp 0.7
    Can't uninstall 'ClientApp'. No files were found to uninstall.
  Running setup.py develop for clientapp
Successfully installed clientapp

root@6be8ee41b6c9:/# pip3 freeze
asn1crypto==0.24.0
-e git+https://gitlab.com/jame/clientapp.git@5158712c426ce74613215e61cab8c21c7064105c#egg=ClientApp
cryptography==2.6.1
entrypoints==0.3
keyring==17.1.1
keyrings.alt==3.1.1
pycrypto==2.6.1
PyGObject==3.30.4
pyxdg==0.25
SecretStorage==2.3.1
six==1.12.0

Итак, если я мог так испортить имя яйца, почему считается ошибкой либо оставить его пустым, либо установить что-то пустое

Ответы [ 2 ]

0 голосов
/ 21 июля 2020

egg= - это имя, которое используется при удалении распакованных библиотек, установленных из репозитория VCS, и имя, которое использует преобразователь зависимостей при поиске зависимых пакетов.

Если вас не волнует эти два варианта использования, по сути, они могут быть установлены на что угодно.

он нашел яйцо через setup.py

Он не нашел яйцо через setup.py , pip нашел setup.py и установил имя яйца для установки setup.py на то, что вы указали. При установке из VCS пакет отсутствует, поэтому имя яйца не настроено, egg= настраивает установку так, как если бы он был установлен с пакетом с этим именем яйца.

0 голосов
/ 19 июля 2020

Трудно ответить, возможно, поднимите это как проблему на pip трекере ошибок и получите точный ответ от самих разработчиков.

Полагаю, имя яйца имеет значение, если проект является зависимостью другого проекта. Например, в случае, когда нужно установить A из PyPI и Z из git, но Z является зависимостью от A .

pip install 'A' 'git+https://example.local/Z.git#egg=Z'
...