C'è qualche differenza significativa tra
pip install -e /path/to/mypackage
e la variante setuptools?
python /path/to/mypackage/setup.py develop
C'è qualche differenza significativa tra
pip install -e /path/to/mypackage
e la variante setuptools?
python /path/to/mypackage/setup.py develop
Risposte:
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 .
Un'altra differenza: pip install -eusa la ruota mentre
python setup.py develop
non la usa.
Con install, è possibile ottenere lo stesso comportamento utilizzando
pip install -e /path/to/package --no-use-wheel
Maggiori informazioni sulle ruote: ruote in pitone
--no-use-wheel a favore di--no-binary :all:
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.
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.
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 .)