"Pip install --editable ./" vs "python setup.py Develop"


178

C'è qualche differenza significativa tra

pip install -e /path/to/mypackage

e la variante setuptools?

python /path/to/mypackage/setup.py develop

1
Questo sembra essere un legame aggiornato che descrive modalità di sviluppo: setuptools.readthedocs.io/en/latest/...
PaulR

se sei interessato a disinstallare (pacchetti in modalità di sviluppo / modificabile) prova questa domanda: stackoverflow.com/questions/17346619/…
Charlie Parker

Risposte:


131

Cerca di evitare di chiamare setup.pydirettamente, non dirà correttamente a pip che hai installato il tuo pacchetto.

Con pip install -e:

Per i progetti locali, viene creata la directory "SomeProject.egg-info" relativa al percorso del progetto. Questo è un vantaggio rispetto al solo utilizzo setup.py develop, che crea le "informazioni uovo" direttamente relative alla directory di lavoro corrente.

Altro: doc

Leggi anche i documenti di setuptools .


L'utente deve eseguire nuovamente "python setup.py sdist" dopo aver apportato la modifica del file per rendere effettiva la modifica?
variabile

tuttavia, se è necessario eseguire il debug (il file setup.py stesso) con 'set_trace', allora 'python setup.py develop' lo rende possibile
mirek,

Il secondo URL è rotto.
bad_coder

Entrambi lavorano per me.
sobolevn,


36

Un'altra differenza che può favorire pip install -eè che se il tuo progetto ha dipendenze in install_requiresin setup.py, allora pip install -e .installa dipendenze con pip, mentre python setup.py developpuò installarsi con easy_installe può causare problemi con: 'egg-info' come menzionato sopra. Quando viene install-requiresutilizzato dependency_linkscon URL git personalizzati, con identificativi uovo associati, questo può essere particolarmente fastidioso.


1
questo spiega perché il mio pacchetto privato non è stato installato. è sul mio server devpi non pypi. Grazie.
ckot

Quando dici che il pacchetto diventa modificabile, vuoi dire che l'utente dovrà eseguire di nuovo 'python setup.py sdist' dopo aver apportato le modifiche al file del pacchetto? O non è necessario eseguire il comando sopra?
variabile

Quando si installa un pacchetto locale pip install -e ., @variable crea essenzialmente un collegamento simbolico nella directory dei pacchetti di siti Python pertinente per puntare alla propria copia di lavoro. Man mano che vengono apportate modifiche al codice per quella copia di lavoro, si riflette immediatamente nella versione "installata", quindi non è necessario rieseguire i comandi di installazione mentre si procede. Ciò è utile principalmente per lo sviluppo in un repository che rappresenta un pacchetto installabile, ma può anche essere utile per es. Scrivere una raccolta di moduli con solo importazioni assolute, ecc.
ely

0

Ancora un'altra differenza: quando corri python setup.py developper una versione che è considerata una pre-release (forse perché la stai eseguendo da un clone git quando non hai verificato una release), allora abiliterai l'installazione delle pre-release delle tue dipendenze . D'altra parte, con pip install --editablete dovresti passare --preesplicitamente se vuoi queste pre-release.

(Vedi il registro CI con pre-release usate accidentalmente e confrontale con una build fissa qui .)

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.