2013-03-15 11 views
11

DomandaCome posso eseguire un file di script come parte di python setup.py install?

so come usare setup.py con setuptools per registrare uno script. Come dovrei eseguire un altro file di script (diciamo un file make) come parte dello python setup.py install.

Sfondo

immagino che avrei usato qualcosa come:

os.system('make maketarget') #from somewhere in the package 

Ma setuptools.setup riceve un dict quindi non posso solo aggiungere questa linea all'interno setup()/e ho bisogno lo script per rincorrere dopo che il pacchetto base è stato installato da .

So che posso aggiungere un comando a setup.py ma voglio che questo script venga chiamato all'interno del passaggio di installazione.

Posso anche default mettendo solo un:

if sys.argv[-1] == 'install': 
    os.system('do something in the shell') 

e solo inserire questo blocco dopo il setup(), ma in qualche modo questo non sembra molto pytonic (ed anche soggetto a errori, ho bisogno di trovare dove questo pacchetto è installato esattamente ecc.)

risposta

6

È possibile creare una sottoclasse del comando di installazione esistente da setuptools ed estenderlo con la funzionalità desiderata. In seguito è possibile registrare come il comando di installazione nella funzione:

from setuptools.command.install import install 

class MyInstall(install): 

    def run(self): 
     install.run(self) 
     print("\n\n\n\nI did it!!!!\n\n\n\n") 

# in the setup function: 
cmdclass={'install': MyInstall} 

anziché l'istruzione di stampa basta chiamare lo script.

Si prega di essere consapevoli del fatto che ci sono molti modi di confezionare software python (uova, ecc.). Il tuo script non verrà chiamato per questi modi se lo chiami solo all'interno della fase di installazione.

Problemi correlati