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.py
direttamente, 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 -e
usa 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_requires
in setup.py
, allora pip install -e .
installa dipendenze con pip, mentre python setup.py develop
può installarsi con easy_install
e può causare problemi con: 'egg-info' come menzionato sopra. Quando viene install-requires
utilizzato dependency_links
con 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 develop
per 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 --editable
te dovresti passare --pre
esplicitamente se vuoi queste pre-release.
(Vedi il registro CI con pre-release usate accidentalmente e confrontale con una build fissa qui .)