Warum # Ei = foo bei der Pip-Installation von Git Repo


Antworten:


33

per pip install -h ist die Zeichenfolge "Ei" das Verzeichnis, das im Rahmen der Installation ausgecheckt wird


12
Kann dies nur derselbe Name wie das Repository sein? Sind Fälle wichtig?
CMCDragonkai

13
"Das Verzeichnis, das ausgecheckt wird"? Also gebe ich den Filialnamen ein? Etwas erfinden?
Chris

1
Wenn Sie ein benutzerdefiniertes Python-Paket erstellt haben und setuptools ausgeführt haben, sollte ein Verzeichnis mit dem Namen project-name.egg-info/top_level.txterstellt worden sein. Verwenden Sie den Inhalt dieser Datei als Wert für den eggParameter.
dspacejs

1
Ich kann nicht herausfinden, ob die egg=...Einstellung wirklich wichtig ist. Das Paket, das ich installiere, enthält mehrere Einträge in der Datei top_level.txt. Ich habe experimentiert, um es mit dem namekwarg abzugleichen, in dem das Skript verwendet, setup.pyaber auch mit einem beliebigen Wert. Die Ergebnisse scheinen in beiden Fällen gleich zu sein. Beachten Sie, dass ich mit der pip install https://...Syntax installiere, die nicht erforderlich ist -e.
Taylor Edmiston

8

Sie müssen # egg = Package einschließen, damit pip weiß, was unter dieser URL zu erwarten ist. Siehe https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

mehr über Eier


17
Was bedeutet das "Pip weiß also, was bei dieser URL zu erwarten ist?" Gibt es etwas anderes als #egg, das gültig ist, um an eine solche URL anzuhängen?
Lorin Hochstein

Ich mag Wills Antwort von der pip install -h, Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)ich bin mir nicht sicher, ob sie woanders verwendet wird ...
Skylar Saveland

Es ist geklont, aber nicht installiert :(
Holms

4

https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support sagt:

Die Komponente "Projektname" des URL-Suffixes "Ei = -" wird von pip in seiner Abhängigkeitslogik verwendet, um das Projekt zu identifizieren, bevor pip die Metadaten herunterlädt und analysiert. Die optionale "Versions" -Komponente des Eiernamens ist funktionell nicht wichtig. Es gibt lediglich einen lesbaren Hinweis darauf, welche Version verwendet wird. Für Projekte, bei denen sich setup.py nicht im Stammverzeichnis des Projekts befindet, wird die Komponente "Unterverzeichnis" verwendet. Der Wert der Komponente "Unterverzeichnis" sollte ein Pfad sein, der vom Stamm des Projekts zu setup.py beginnt.

Daraus schließe ich, dass der Ei-Wert nur für Abhängigkeitsprüfungen verwendet wird, und daher denke ich, dass gemäß Konvention der Paketname (dh some-pypi-package-name) verwendet werden sollte, nicht irgendein enthaltener Ordner (dh some_pypi_package_name)


3

Ein Ei ist nur ein gebündelter Python-Code . In einer Git-URL ist das Ei der Projektname. VCS-Unterstützung

Normalerweise installieren wir Python-Pakete von Pypi, daher geben Sie NUR den Paketnamen und die Version an (oder es wird die neueste Version angenommen, wenn Sie dies nicht angeben). Pypi sucht dann nach dem gewünschten Ei und pip installiert das. pip install celerywürde das neueste veröffentlichte Ei pip install celery[redis]installieren und würde ein anderes Ei installieren, das das gleiche Selleriepaket enthält, und würde auch die neuesten Eier von allen Paketen installieren, die als Abhängigkeiten für Redis in der Setup.py von Sellerie aufgeführt sind.

Mit git- und gitlab-Pfaden geben Sie an /{user|group}/{repository}.git@{tag}#egg={package-name}. Es gibt einen Unterschied zwischen #egg=celeryund #egg=celery[redis], aber beide stammen aus demselben Quellcode.

"tag" kann neben einem tatsächlichen Tag auch ein Zweig oder ein Commit-Hash sein. Es wird angenommen, masterwenn Sie nicht angeben.

Zum Beispiel git+https://github.com/celery/celery.git#egg=celery==4.3.0würde der Hauptzweig auschecken und diesen installieren. Obwohl Sie eine Versionsnummer angegeben haben, wird diese bei der Installation nicht berücksichtigt. Die Versionsnummer wird ignoriert

Bei der Installation über Git oder andere VCS-URLs möchten Sie das Tag oder den Hash der benötigten Version finden. Beispiel: git+https://github.com/celery/celery.git@v4.3.0#egg=celeryHiermit wird das Commit mit dem Tag "v4.3.0" ausgecheckt und anschließend das Paket aus diesem Quellcode installiert. Angenommen, die Betreuer haben ihre Repositorys nicht ungeheuerlich falsch markiert, können Sie die gewünschte Version erhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.