2013-07-23 37 views
7

Invocare una chiamata a setup da setuptools con la versione 0.9.6 Posso eseguire il seguente comando:Cosa fa esattamente "setup.py clean"?

python setup.py clean 

Ma cosa significa questo esattamente fare? L'aiuto su questo comando è un po 'scarne, e l'esecuzione di

python setup.py clean --all 

dà dichiarazioni inutili come

'build/lib.linux-i686-2.7' does not exist -- can't clean it 

C'è la possibilità di utilizzare questo comando clean per esempio ripulire automaticamente i file python temporanei che terminano con .pyc e .~? Questo può essere fatto con questo comando, ha bisogno di essere configurato, ...?

+0

Per motivi di interesse, perché vorresti un comportamento in più? Posso immaginare che sia bello avere una directory pulita, ma non è qualcosa che dovrebbe essere infastidito nel complesso. Qualche ragione specifica? – Evert

+0

Voglio il comportamento in più per specificare semplicemente una directory, da cui l'intero contenuto è incluso nel pacchetto. Senza rimuovere prima i file Python temporanei, tutti questi file temporanei verranno utilizzati nell'imballaggio, no? Inoltre, il comando 'clean' può essere usato per pulire semplicemente la directory di lavoro dai file temporanei per vedere chiaramente cosa hai. – Alex

+0

Per il packaging, esaminare usando 'setup.py sdist'. Per quanto riguarda la pulizia: i file '* .pyc' non dovrebbero essere un problema, ma potresti considerare' find. -name "* .pyc" | xargs rm'. Quei file '* ~' non sono qualcosa con cui Python dovrebbe essere infastidito, in quanto questi non sono correlati a Python (questo potrebbe andare anche per alcuni altri tipi di file). – Evert

risposta

6

Per quanto ne so, rimuove solo la sottodirectory build, dove Python mette tutti i file da installare, comprese le estensioni che devono essere compilate.

Non ci dovrebbero essere file *.pyc altrove, a meno che non abbiate eseguito Python su alcuni script nella directory di origine (cosa che potrebbe accadere se eseguite test), o importati moduli direttamente dalla directory di origine. I file *~ sono file di backup di emacs e pertanto non verrebbero eliminati dallo setup.py. (Se hai visto questo comportamento da make clean, quello è semplicemente perché qualcuno codificato che nel Makefile.)

Probabilmente poteva ignorare il comando di pulito in modo da (ricorsivamente) rimuovere *.pyc file, ma dubito che ci sia un bisogno. In generale, Python è abbastanza intelligente da ricompilare i file *.py nei file *.pyc se il primo è stato modificato, e altrimenti usare quest'ultimo sarà semplicemente più veloce.

C'è un avvertimento che ho incontrato, e questo è quando si fa un setup.py build_ext --inplace, la pulizia non rimuovere il modulo compilato (s), in quanto questi non sono nella directory di compilazione. Quale per me sembra una mancanza del comando pulito.

Nel complesso, sembra che il comando clean sia stato aggiunto per essere in linea con il comportamento di make, ma non sembra aggiungere molto.

+1

Vedere altro commento: quando creo un pacchetto, voglio innanzitutto liberarmi dei file temporanei. Non voglio che facciano parte del pacchetto. – Alex

+0

Se ho usato 'setup.py build_ext --inplace', c'è un modo per rimuovere tutti i moduli compilati? – Garrett

+2

@Garrett Se questi sono solo moduli Python puri, è possibile utilizzare il suggerimento di ricerca (mofidied) nei commenti alla domanda: 'find -name" * pyc "-delete'. Se ci sono altri file (compilati da file sorgente Cython o C), le cose sono più complicate e puoi provare a eseguire il comando find per ogni tipo di file. – Evert

Problemi correlati