2013-09-27 41 views
203

due opzioni in setup.py develop e install mi stanno confondendo. In base a questo , utilizzando develop viene creato un collegamento speciale alla directory dei pacchetti del sito.Python setup.py sviluppare vs installare

Le persone hanno suggerito di utilizzare python setup.py install per una nuova installazione e python setup.py develop dopo che sono state apportate modifiche al file di installazione.

Qualcuno può fare luce sull'uso di questi comandi?

risposta

273

python setup.py install viene utilizzato per installare (in genere di terzi) pacchetti che non si sta andando ad essere in via di sviluppo/editing/debugging da soli.

Per la propria roba, si desidera ottenere il vostro pacchetto installato e quindi in grado di modificare frequentemente il codice e non devono re-installare il pacchetto-questo è esattamente ciò che python setup.py develop fa: installa il pacchetto (in genere solo una cartella di origine) in un modo che ti permetta di modificare comodamente il tuo codice dopo averlo installato nell'ambiente (virtuale) e di avere le modifiche immediatamente operative.

noti che si consiglia vivamente di utilizzare pip install . (installazione) e pip install -e . (sviluppatore installa) per installare i pacchetti, come invocando setup.py direttamente farà le cose sbagliate per molte dipendenze come prerelease tirando e versioni pacchetti incompatibili e fare la pacchetto difficile da disinstallare con pip.

+56

Erik si adatta. È anche utile sapere che 'setup.py develop' ha l'opzione' --uninstall' per quando hai finito di fare hacking. – philadams

+5

L'ultimo pensiero è che un'altra opzione per 'setup.py develop' quando hacking su un pacchetto python è di usare" semplici (ma esplicite) modifiche al percorso per risolvere il pacchetto correttamente "[Kenneth Reitz] (http: // kennethreitz. org/repository-structure-and-python /) – philadams

+2

Ho riscontrato dei problemi usando 'python setup.py develop' cercando di impostare Ceilometer per lo sviluppo locale. Ho finito con l'uso di 'pip install -e PATH' (all'interno di un virtualenv) per evitare [problemi sorti tramite' easy_install'] (https://ask.openstack.org/en/question/87376/unable-to -setup-nefoipsometro-in-sviluppo-mode /). –

77

Dal documentation. Il develop non installerà il pacchetto ma creerà un .egg-link nella directory di implementazione nella directory del codice sorgente del progetto.

Quindi è come l'installazione, ma invece di copiare al site-packages aggiunge un link simbolico (i .egg-link agisce come un link simbolico multipiattaforma).

In questo modo è possibile modificare il codice sorgente e vedere direttamente le modifiche senza dover reinstallare ogni volta che si apportano piccole modifiche. Questo è utile quando sei lo sviluppatore di quel progetto da cui il nome develop. Se sono solo installando il pacchetto di qualcun altro si dovrebbe usare install

10

Un'altra cosa che le persone possono trovare utile quando si utilizza il metodo develop è l'opzione --user da installare senza sudo. Es:

python setup.py develop --user 

anziché

sudo python setup.py develop 
+3

IIUC non dovresti mai 'setup.py develop' nel tuo sistema, questo ha senso solo in una virtualizzazione. – dividebyzero

+2

@dividebyzero Vuoi dire che dovresti sempre usare 'python setup.py develop --user', se ho capito bene? Inoltre, potresti dirmi dove è installato il pacchetto usando 'python setup.py develop --user'? Grazie! –

+2

Penso che '--user' si installerà in una directory nel tuo account di casa e non influenzerà altri utenti nel tuo sistema. Lo 'sviluppo' creerà collegamenti alla directory sorgente del progetto invece di copiare effettivamente tutto. 'develop --user' dovrebbe essere OK, e' develop' in un virtualenv. Solo "sviluppare" il sistema attuale è strano, perché potresti avere altri utenti che usano qualcosa che punta al progetto nella tua copia personale del codice sorgente del progetto. – dividebyzero

Problemi correlati