Perché # egg = foo quando si installa tramite pip da git repo


Risposte:


35

per pip install -h la stringa "egg" è la directory che viene estratta come parte dell'installazione


12
Può essere lo stesso nome del repository? I casi contano?
CMCDragonkai

14
"La directory che viene estratta"? Quindi inserisco il nome della filiale? Inventa qualcosa?
Chris

2
Se hai creato un pacchetto Python personalizzato, quando hai eseguito setuptools, project-name.egg-info/top_level.txtdovrebbe essere stata creata una directory denominata . Usa il contenuto di questo file come valore per il eggparametro.
dspacejs

2
Non riesco a capire se l' egg=...impostazione sia davvero importante. Il pacchetto che sto installando ha più voci nel file top_level.txt. Ho provato ad abbinarlo al namekwarg in cui lo script utilizza setup.pyma anche a un valore arbitrario. I risultati sembrano essere gli stessi in entrambi i casi. Nota che sto installando usando la pip install https://...sintassi che non richiede -e.
Taylor Edmiston

7

Devi includere # egg = Pacchetto così pip sa cosa aspettarsi da quell'URL. Vedi https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

di più sulle uova


20
Cosa significa "così pip sa cosa aspettarsi da quell'URL?" C'è qualcosa di diverso da #egg che può essere aggiunto a un URL del genere?
Lorin Hochstein

In realtà mi piace la risposta di Will dal pip install -h, Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)non sono sicuro che sia usata altrove ...
Skylar Saveland

È clonato ma non installato :(
holms

6

https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support dice:

Il componente "nome progetto" del suffisso URL "egg = -" viene utilizzato da pip nella sua logica di dipendenza per identificare il progetto prima di pip scaricare e analizzare i metadati. Il componente opzionale "versione" del nome dell'uovo non è funzionalmente importante. Fornisce semplicemente un indizio leggibile dall'uomo su quale versione è in uso. Per i progetti in cui setup.py non è nella radice del progetto, viene utilizzato il componente "sottodirectory". Il valore del componente "sottodirectory" dovrebbe essere un percorso che parte dalla radice del progetto fino a dove si trova setup.py.

Da ciò deduco che il valore dell'uovo è usato solo per i controlli delle dipendenze e quindi penso, per convenzione, some-pypi-package-namedovrebbe essere usato il nome del pacchetto (ie ), non una cartella contenuta (ie some_pypi_package_name)


6

Un uovo è solo un codice Python in bundle . In un URL git, l'uovo è il nome del progetto. Supporto VCS

Normalmente installiamo pacchetti Python da Pypi, quindi specifichi SOLO il nome e la versione del pacchetto (o presume l'ultima versione se non specifichi). Pypi cerca quindi quale uovo desideri e pip lo installa. pip install celeryinstallerebbe l'ultimo uovo pubblicato e pip install celery[redis]installerebbe un uovo diverso che contiene lo stesso pacchetto di sedano e installa anche le ultime uova da qualsiasi pacchetto fosse elencato come dipendenze per redis in setup.py di sedano.

Con i percorsi git e gitlab, specifichi /{user|group}/{repository}.git@{tag}#egg={package-name}. c'è una differenza tra #egg=celerye #egg=celery[redis], ma provengono entrambi dallo stesso codice sorgente.

"tag" può anche essere un branch o un hash di commit oltre a un tag effettivo. Si presume che sia masterse non si specifica.

per esempio, git+https://github.com/celery/celery.git#egg=celery==4.3.0controlla il ramo principale e lo installa. Anche se è stato specificato un numero di versione, non viene preso in considerazione durante l'installazione. IL NUMERO DELLA VERSIONE VIENE IGNORATO

Quando installi tramite git o altri URL VCS, dovrai trovare il tag o l'hash della versione che ti serve. Ad esempio, git+https://github.com/celery/celery.git@v4.3.0#egg=celeryche eseguirà il checkout del commit contrassegnato con "v4.3.0" e quindi installerà il pacchetto da quel codice sorgente. Supponendo che i manutentori non abbiano etichettato erroneamente i loro repository, puoi ottenere la versione che desideri in questo modo.

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.