Ich habe Zeilen in meiner Pip Freeze-Ausgabe wie:
-e [email protected]:widgets.git@3bdaf7d07c44a87c38beb1e8abd163a7edf99adc#egg=widgets
-e [email protected]:[email protected]#egg=gadgets
Wenn es an der Zeit ist, mit pip install -r requirements.txt
zu installieren, scheint es, dass pip example.com:[email protected]
fälschlicherweise als die vollständige URL des Git-Repositorys identifiziert, obwohl es tatsächlich nur example.com:gadgets.git
und dann sollte es it schau dir den 3bda...99adc-Commit an.
Wenn ich versuche, die Pip-Freeze-Ausgabe zu verwenden, z
pip install -e [email protected]:[email protected]#egg=gadgets
Ich bekomme den gleichen Fehler.
Dies ist alles mit pip 1.5.4
Beachten Sie, dass es mit den folgenden Änderungen korrekt funktioniert:
pip install -e [email protected]:/path/to/project/[email protected]#egg=project
oder
pip install -e [email protected]:project.git#egg=project
Obwohl im letzteren Fall offensichtlich nur der aktuelle Commit abgerufen wird und nicht der in 3bdaf angegebene…
Außerdem funktioniert es aus Gründen, die ich nicht ergründen kann, für Anfragen an Github.
Das ist,
pip install -e [email protected]:JordanReiter/[email protected]#egg=github_project
funktioniert.
Dies ist ähnlich wie #6293. Der Parser (basierend auf stdlib urlsplit
hat Probleme, den Pfadteil der URL zu identifizieren, wenn er überhaupt kein /
enthält, und identifiziert das Ganze nach +
als netloc
Die Variante ohne rev funktioniert völlig zufällig, weil netloc
und path
später wieder zusammengefügt und an Git übergeben werden (was automatisch das Richtige tut).
Die Diskussionen in #6293 scheinen dafür zu sprechen, die URL-Unterstützung im SCP-Stil vollständig einzustellen, daher wäre die bessere Lösung hier, pip freeze
stattdessen git+ssh://
URLs auszuspucken.
Schließen, da wir vorschlagen, das Formular git+git@
in #7554 zu entfernen.