Pip Installation von Git Repo Branch


685

Es wird versucht, pipden spezifischen Zweig eines Repos zu installieren. Google sagt es mir

pip install git + https://github.com/user/repo.git@branch

Der Name der Filiale ist issue/34/oscar-0.6so, wie ich es getan habe, pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6aber es wird eine 404 zurückgegeben.

Wie installiere ich diesen Zweig?

Antworten:


931

Stellen Sie das URL-Präfix voran git+(siehe VCS-Unterstützung ):

pip install git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6

Und geben Sie den Filialnamen ohne den führenden an /.


5
Ist es obligatorisch, einen Zweig anzugeben oder einen Commit durchzuführen @?
Eugene

9
@eugene, Nein, @und Teile danach sind optional.
Falsetru

3
Hey, jetzt ist es nicht nötig tree, das ist ein Fehler.
SalahAdDin

6
Ist für Zweige, zum Beispiel:pip install -U git+https://github.com/danreeves/wagtailgmaps@3.0.0
SalahAdDin

3
Sie können so etwas auch git+https://github.com/adiralashiva8/robotframework-metrics@v3.1.4in Ihre require.txt einfügen und dann mit installieren pip install -r requirements.txt. Dadurch wird Tag v3.1.4 vom Hauptzweig installiert.
Wlad

311

Die Verwendung von pip mit git + zum Klonen eines Repositorys kann sehr langsam sein (Test mit https://github.com/django/django@stable/1.6.x dauert beispielsweise einige Minuten). Das schnellste, was ich gefunden habe und was mit GitHub und BitBucket funktioniert, ist:

pip install https://github.com/user/repository/archive/branch.zip

was für Django-Meister wird:

pip install https://github.com/django/django/archive/master.zip

für Django Stable / 1.7.x:

pip install https://github.com/django/django/archive/stable/1.7.x.zip

Bei BitBucket handelt es sich um dasselbe vorhersehbare Muster:

pip install https://bitbucket.org/izi/django-admin-tools/get/default.zip

Hier wird der Hauptzweig im Allgemeinen als Standard bezeichnet. Dadurch wird die Installation Ihrer Anforderung.txt erheblich beschleunigt.

In einigen anderen Antworten werden Variationen erwähnt, die erforderlich sind, wenn Sie das zu installierende Paket in Ihr Paket einfügen requirements.txt. Beachten Sie, dass mit diesem Archiv Syntax, die führende -eund nachlauf #egg=blah-blahsind nicht erforderlich, und Sie können einfach nur die URL, so dass Ihr requirements.txt aussieht:

https://github.com/user/repository/archive/branch.zip

29
Hinweis: Ab Django 1.9 wird Django mit einer Datei geliefert , die einen Unicode-Dateinamen hat . Der von Pip-Drosseln verwendete Reißverschluss. Eine einfache Problemumgehung ist das Ersetzen .zipdurch .tar.gz, da der Teerextraktor funktioniert.
Spektren

4
Ich frage mich, ob pip --depth 0beim Klonen passieren könnte , um es effizienter zu machen (der gesamte Git-Verlauf wird nicht benötigt, um einen Snapshot für pip zu installieren). git-scm.com/docs/git-clone
cs01

6
Dies funktioniert auch für Commit-Hashes! pip install https://github.com/django/django/archive/ebaa08b.zip
Fush

4
Vielen Dank für den Hinweis auf den Geschwindigkeitsunterschied. Ich habe sie nicht getestet und verglichen, aber ich glaube, dass der Geschwindigkeitsunterschied besteht, da die Installation von einem Zweig immer noch zum Herunterladen des gesamten Repo-Verlaufs führen würde, während die Installation von einem .zip(oder .tar.gz) nur zum Herunterladen eines Schnappschusses des Repos führen würde.
RayLuo

Ist es möglich, Extras mit dieser Syntax zu installieren? Zum Beispiel versuche ich, github.com/apache/incubator-airflow @ master (das normale PyPI-Paket ist Apache-Airflow) zu installieren , um mit einer unveröffentlichten Version zu arbeiten. Ich möchte den Aufruf konvertieren pip install apache-airflow[crypto, slack], um diese Extras mit der Archivversion zu installieren. Ich habe es versucht, pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]aber dies unterbricht die URL und die Installation.
Taylor Edmiston

67

Anweisungen zur Installation von Private Repo mit SSH-Anmeldeinformationen :

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version

51

Nur um ein Extra hinzuzufügen, wenn Sie es in Ihrer Pip-Datei installieren möchten, kann es wie folgt hinzugefügt werden:

-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal

Es wird jedoch als Ei gespeichert.


5
Besser ohne die -e. Siehe: stackoverflow.com/a/34518202/451710
Eyal Levin

4
Danke für den Kommentar, sehr interessant. Ich denke, die Leute neigen dazu, die -eFlagge zu benutzen , um mögliche Konflikte mit einem bereits existierenden Paket zu vermeiden. Ich denke, es ist eine Frage der Wahl
Hassek

4
Und wenn Sie "Extras" wollen, fügen Sie sie wie -e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
folgt

Beachten Sie, dass das -eeigentlich nicht erforderlich zu sein scheint.
Taylor Edmiston

Aus irgendeinem Grund funktioniert es nicht für mich ohne-e
Kurt Bourbaki

4

Sie haben die Installationsprozedur für Eidateien verwendet. Dieses Verfahren unterstützt die Installation über git, git+http, git+https, git+ssh, git+gitund git+file. Einige davon werden erwähnt.

Es ist gut, dass Sie Zweige, Tags oder Hashes zum Installieren verwenden können.

@Steve_K stellte fest, dass die Installation mit "git +" langsam sein kann, und schlug die Installation über eine Zip-Datei vor:

pip install https://github.com/user/repository/archive/branch.zip

Alternativ schlage ich vor, dass Sie die .whlDatei mithilfe der Datei installieren, falls vorhanden.

pip install https://github.com/user/repository/archive/branch.whl

Es ist ein ziemlich neues Format, neuer als Eierdateien. Es erfordert Rad- und Setuptools> = 0,8 Pakete. Mehr finden Sie hier .


1
Die Frage ist nicht zu github spezifiziert. Der Begriff archive / branch.zip ist nur für github spezifisch.
Jorge Leitao

0

Das funktionierte wie Charme:

pip3 install git+https://github.com/deepak1725/fabric8-analytics-worker.git@develop

Wo :

entwickeln: Zweig

Fabric8-Analytics-Worker.git: Repo

deepak1725: Benutzer

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.