Configurazione in modo che l'installazione di pip possa funzionare da Github


226

Vorremmo usare pip con github per installare pacchetti privati ​​sui nostri server di produzione. Questa domanda riguarda ciò che deve essere nel repository github affinché l'installazione abbia esito positivo.

Supponendo che la seguente riga di comando (che esegue l'autenticazione corretta e tenta di installare):

pip install git+ssh://git@github.com/BlahCo/search/tree/prod_release_branch/ProductName

Cosa deve risiedere nel ProductName? È il contenuto di quello che normalmente sarebbe nel file tar dopo aver eseguito setup.py con l'opzione sdist, oppure è il file tar.gz effettivo o qualcos'altro?

Sto chiedendo qui perché ho provato diverse varianti e non riesco a farlo funzionare. Qualsiasi aiuto apprezzato.

Risposte:


290

È necessario l'intero pacchetto python, con un setup.pyfile al suo interno.

Un pacchetto chiamato foosarebbe:

foo # the installable package
├── foo
   ├── __init__.py
   └── bar.py
└── setup.py

E installa da github come:

$ pip install git+https://github.com/myuser/foo.git@v123
or
$ pip install git+https://github.com/myuser/foo.git@newbranch

Maggiori informazioni su https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support


3
Quanto sopra funziona, grazie mille. Ma cosa succede se ho versioni in un sottodir all'interno di un repository, quindi piuttosto che foo.git sto cercando foo / release / ProductVer. È possibile e se sì come? Grazie mille per l'aiuto!
ccgillett,

4
No, non è possibile. pip si installa solo dalla directory del repository di root, almeno per git. Non so come si comporta la sovversione ...
Hugo Tavares,

3
Se vuoi farlo su ssh e repository privati, questo è un post su come farlo
Jonathan,

Perché non hai passato l' -eopzione (modalità modificabile) a pip?
Amelio Vazquez-Reina

14
Ecco il nuovo schema di URL: pip install git+https://github.com/pypa/pip.git Fonte: pip Github repo
circa

111

Ho avuto un problema simile quando ho dovuto installare dal repository github, ma non volevo installare git, ecc.

Il modo semplice per farlo è usare l'archivio zip del pacchetto. Aggiungi /zipball/masterall'URL repository:

    $ pip install https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py egg_info for package from https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Installing collected packages: django-debug-toolbar-mongo
  Running setup.py install for django-debug-toolbar-mongo
Successfully installed django-debug-toolbar-mongo
Cleaning up...

In questo modo farai funzionare pip con i repository di origine github.


2
Questa è l'unica risposta che funziona anche con Windows
divenex il

Come si può fare con i repository privati? (come si pone la domanda)
Rodrigo E. Principe,

29

Se vuoi usare il requirements.txtfile, avrai bisogno di gitqualcosa come la voce qui sotto per recuperare anonimamente il ramo principale nel tuo requirements.txt.

Per l'installazione regolare:

git+git://github.com/celery/django-celery.git

Per l' installazione " modificabile ":

-e git://github.com/celery/django-celery.git#egg=django-celery

La modalità modificabile scarica il codice sorgente del progetto ./srcnella directory corrente. Permette pip freezedi produrre la corretta posizione github del pacchetto.


3
da dove viene quel nome di uovo? non riesce a caricare il pacchetto in django dopo aver sostituito il pacchetto pip con github repo
holms

@holms Nome di ricerca in setup.py
wieczorek1990

Cosa #egg=django-celery? È un segnaposto?
incantare il

@enchance È il nome del pacchetto.
wieczorek1990

13

Clonare il repository di destinazione allo stesso modo in cui si clonano altri progetti:

git clone git@github.com:myuser/foo.git

Quindi installarlo in modalità di sviluppo:

cd foo
pip install -e .

Puoi cambiare tutto ciò che non vuoi e ogni codice usando il foopacchetto userà il codice modificato.

Ci sono 2 vantaggi di questa soluzione:

  1. È possibile installare il pacchetto nella directory dei progetti domestici.
  2. Il pacchetto include .gitdir, quindi è un repository Git normale. Puoi spingere subito verso la tua forchetta.

2
Posso testimoniare che questa soluzione è magica. Nel mio caso, volevo hackerare pip, quindi ho clonato il piprepository, creato un virtualenv, attivato e fatto pip install -e .. Quindi il pipin virtualenv era in modalità di sviluppo! Sono impressionato dal fatto che funzioni anche con il gestore pacchetti stesso.
Radon Rosborough,

Questo è fantastico! Ho notato che quando ho installato usando questo metodo e poi eseguito pip list, il pacchetto in questione ha riferimenti al ramo Git e al percorso assoluto da cui è stato installato. Conserva riferimenti a questi o la fonte può essere eliminata?
MadPhysicist,

0

puoi provare in questo modo in Colab

!git clone https://github.com/UKPLab/sentence-transformers.git
!pip install -e /content/sentence-transformers
import sentence_transformers
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.