Wenn ich eine "pip install -e ..." mache, um von einem Git-Repo zu installieren, muss ich #gg = somename angeben oder pip beschwert sich. Beispielsweise:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
Welche Bedeutung hat diese "Ei" -Saite?
pip install
Dokumentation spricht darüber#egg=name
, gibt aber keine klare Antwort.Antworten:
per pip install -h ist die Zeichenfolge "Ei" das Verzeichnis, das im Rahmen der Installation ausgecheckt wird
quelle
project-name.egg-info/top_level.txt
erstellt worden sein. Verwenden Sie den Inhalt dieser Datei als Wert für denegg
Parameter.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 demname
kwarg abzugleichen, in dem das Skript verwendet,setup.py
aber auch mit einem beliebigen Wert. Die Ergebnisse scheinen in beiden Fällen gleich zu sein. Beachten Sie, dass ich mit derpip install https://...
Syntax installiere, die nicht erforderlich ist-e
.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
quelle
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 ...https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support sagt:
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 (dhsome_pypi_package_name
)quelle
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 celery
würde das neueste veröffentlichte Eipip 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=celery
und#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,
master
wenn Sie nicht angeben.Zum Beispiel
git+https://github.com/celery/celery.git#egg=celery==4.3.0
würde der Hauptzweig auschecken und diesen installieren. Obwohl Sie eine Versionsnummer angegeben haben, wird diese bei der Installation nicht berücksichtigt. Die Versionsnummer wird ignoriertBei 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/[email protected]#egg=celery
Hiermit 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.quelle