installazione pip dal ramo repository git


687

Prova di pipinstallare un ramo specifico di un repository. Google me lo dice

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

Il nome della filiale è issue/34/oscar-0.6così, pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6ma l' ho restituito un 404.

Come installo questo ramo?

Risposte:


933

Prepara il prefisso url git+(vedi supporto VCS ):

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

E specificare il nome del ramo senza il lead /.


5
è obbligatorio specificare la filiale o il commit da @?
Eugene,

9
@eugene, No, @e le parti successive sono opzionali.
falsetru,

3
Ehi, ora non è necessario tree, questo genera un errore.
SalahAdDin

6
È per le filiali, ad esempio:pip install -U git+https://github.com/danreeves/wagtailgmaps@3.0.0
SalahAdDin

3
Puoi anche inserire qualcosa di simile git+https://github.com/adiralashiva8/robotframework-metrics@v3.1.4nel tuo requisito.txt e installarlo con pip install -r requirements.txt. Ciò installerà Tag v3.1.4 dal ramo master.
Salato il

311

L'uso di pip con git + per clonare un repository può essere estremamente lento (testare ad esempio https://github.com/django/django@stable/1.6.x , ci vorranno alcuni minuti). La cosa più veloce che ho trovato, che funziona con GitHub e BitBucket, è:

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

che diventa per il django master:

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

per django stable / 1.7.x:

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

Con BitBucket si tratta dello stesso modello prevedibile:

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

Qui, il ramo principale è generalmente chiamato predefinito. Ciò renderà l'installazione dei tuoi requisiti.txt molto più veloce.

Alcune altre risposte menzionano le variazioni richieste quando si colloca il pacchetto da installare nel proprio requirements.txt. Tieni presente che con questa sintassi dell'archivio, il comando iniziale -ee finale non#egg=blah-blah sono richiesti e puoi semplicemente incollare l'URL, in modo che i tuoi requisiti.txt siano:

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

29
Nota: da Django 1.9 in poi, Django viene fornito con un file che ha un nome file unicode . L'estrattore zip utilizzato da Pip soffoca su quello. Una soluzione semplice è quella di sostituire .zipcon .tar.gz, come lavora l'estrattore di catrame.
extra il

4
Mi chiedo se pip potrebbe passare --depth 0durante la clonazione per renderlo più efficiente (l'intera storia di git non è necessaria per installare un'istantanea per pip). git-scm.com/docs/git-clone
cs01

6
Questo funziona anche per gli hash di commit! pip install https://github.com/django/django/archive/ebaa08b.zip
Fush

4
Grazie per aver sottolineato la differenza di velocità. Non li ho testati e confrontati, ma credo che esista la differenza di velocità, perché l'installazione da un ramo comporterebbe comunque il download dell'intera cronologia dei repository, mentre l'installazione da un .zip(o .tar.gz) comporterebbe il download di solo un'istantanea del repository.
RayLuo,

È possibile installare extra usando questa sintassi? Ad esempio, sto cercando di installare github.com/apache/incubator-airflow @ master (il normale pacchetto PyPI è apache-airflow) per funzionare con una versione inedita. Vorrei convertire la chiamata pip install apache-airflow[crypto, slack]per installare questi extra con la versione di archivio. Ho provato pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]ma questo interrompe l'URL e l'installazione.
Taylor Edmiston,

67

Istruzioni per l'installazione da un repository privato utilizzando le credenziali ssh :

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

51

Solo per aggiungere un extra, se vuoi installarlo nel tuo file pip può essere aggiunto in questo modo:

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

Sarà salvato come uovo però.


5
Meglio usarlo senza il -e. Vedi: stackoverflow.com/a/34518202/451710
Eyal Levin

4
Grazie per il commento, molto interessante. Penso che le persone tendano a usare la -ebandiera per evitare ogni possibile conflitto con un pacchetto già esistente. Immagino sia una questione di scelta
Hassek il

4
E se vuoi "extra", aggiungili nel suo frammento, in questo modo:-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
ankostis

Si noti che in -erealtà non sembra essere richiesto.
Taylor Edmiston,

Per qualche motivo, non funziona per me senza il-e
Kurt Bourbaki

4

È stata utilizzata la procedura di installazione dei file uovo. Questa procedura supporta l'installazione su git, git+http, git+https, git+ssh, git+gite git+file. Alcuni di questi sono menzionati.

È utile utilizzare rami, tag o hash per l'installazione.

@Steve_K ha notato che può essere lento installare con "git +" e ha proposto l'installazione tramite file zip:

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

In alternativa, ti suggerisco di installare utilizzando il .whlfile se questo esiste.

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

È un formato piuttosto nuovo, più recente dei file uovo. Richiede pacchetti wheel e setuptools> = 0.8. Puoi trovare di più qui .


1
La domanda non è specifica per github. La nozione di archivio / branch.zip è specifica solo per github.
Jorge Leitao,

0

Funzionava come un fascino:

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

Dove :

sviluppare: Branch

fabric8-analytics-worker.git: Repo

deepak1725: utente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.