Installieren Sie ein bestimmtes Git-Commit mit pip

Antworten:

281

Sie können einen Commit-Hash, einen Zweignamen und ein Tag angeben.

Für den Filialnamen und das Tag können Sie auch eine komprimierte Distribution installieren. Dies ist schneller und effizienter, da nicht das gesamte Repository geklont werden muss. GitHub erstellt diese Bundles automatisch.

Hash:

$ pip install git+git://github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1

Zweigname

Mit git

$ pip install git+git://github.com/aladagemre/django-notification.git@cool-feature-branch

oder aus dem Quellpaket

$ pip install https://github.com/aladagemre/django-notification/archive/cool-feature-branch.tar.gz

Etikett

mit git

$ pip install git+git://github.com/aladagemre/[email protected]

oder aus dem Quellpaket

$ pip install https://github.com/aladagemre/django-notification/archive/v2.1.0.tar.gz

Es ist eine nicht gut dokumentierte Funktion, aber Sie finden weitere Informationen unter https://pip.pypa.io/en/latest/reference/pip_install.html#git

Hugo Tavares
quelle
24
Es wird diese lustige Nachricht hinzufügen:Could not find a tag or branch '2927346f4c513a217ac8ad076e494dd1adbf70e1', assuming commit.
vlad-ardelean
10
@ vlad-ardelean Irgendeine Idee, wie man pip IT IT ein Commit sagt? Dies wird in meinem Bereitstellungsskript ausgegeben und ich möchte nicht alle stderr unterdrücken.
Leonardo Arroyo
Wenn Sie nichts angeben, wie ist das Verhalten?
Scott Stafford
@ScottStafford Sie sollten keinen Zweig / Tag haben, der wie eine Festschreibungsnachricht aufgerufen wird. Das wäre ... seltsam.
Martin Thoma
Zusätzlich würde ich eine HTTPS-Version des git+Befehls erwähnen : pip install git+https://github.com/gpoore/codebraid@011464539bfb09b8611c8aef0d543532cea958bf. Dies kann für Personen wichtig sein, die hinter http-Proxys von Unternehmen stehen.
Grwlf
19

Ein zusätzlicher Kommentar zur Antwort von @ hugo-tavares:

Wenn es sich um ein privates GitHub-Repository handelt, müssen Sie Folgendes verwenden:

pip install git+ssh://[email protected]/....

In deinem Fall:

pip install git+ssh://[email protected]/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1
PGuiv
quelle
12

Es ist möglich, ein Python-Paket mithilfe der Datei require.txt in Ihrem Projekt automatisch zu installieren, indem Sie einfach die folgende Zeile hinzufügen:

-e git+https://github.com/owner/repository.git@branch_or_commit

und führen Sie die Befehlszeile aus:

$ pip install -r requirements.txt

mannysz
quelle
15
Für mich (pip 9.0.1 in python3.5 virtualenv) hat es nicht funktioniert: ausgelöst pip install -r requirements.txt'Anforderungsname konnte nicht erkannt werden , bitte geben Sie einen mit #gg =' an. Aber es funktionierte mit dem Format '-e git + github.com/owner/repository.git#egg=branch_or_commit '
Edouard Berthe
Sie müssen dieses Format in der Datei require.txt verwenden. Hast du das gemacht?
Mannysz
Ich habe es zum Laufen gebracht, aber das ist unklar. Sie müssen "package_name -e ..." und nicht nur "-e ..." am Anfang der Zeile haben.
Udi
1

Wenn Sie ein Eierpaket erstellen möchten, können Sie immer noch denselben @ branch_or_commit-Anhang verwenden: pip install git+ssh://[email protected]/myrepo.git@mybranch#egg=myeggscript

Dannid
quelle