Sto tentando di aggiungere un'attività di post-installazione alle distutils Python come descritto in How to extend distutils with a simple post install script?. Si suppone che l'attività esegua uno script Python nella directory lib installata. Questo script genera ulteriori moduli Python necessari per il pacchetto installato.Eseguire un'installazione post script Python utilizzando distutils/setuptools
Il mio primo tentativo è il seguente:
from distutils.core import setup
from distutils.command.install import install
class post_install(install):
def run(self):
install.run(self)
from subprocess import call
call(['python', 'scriptname.py'],
cwd=self.install_lib + 'packagename')
setup(
...
cmdclass={'install': post_install},
)
Questo approccio funziona, ma per quanto ne so ha due carenze:
- Se l'utente ha usato un interprete Python diverso da quello uno prelevato da
PATH
, lo script di postinstallazione verrà eseguito con un diverso interprete che potrebbe causare un problema. - Non è sicuro contro il funzionamento a secco, ecc., Che potrei essere in grado di rimediare avvolgendolo in una funzione e chiamandolo con
distutils.cmd.Command.execute
.
Come posso migliorare la mia soluzione? Esiste un modo consigliato/le migliori pratiche per farlo? Mi piacerebbe evitare di tirare fuori un'altra dipendenza se possibile.
Per coloro che vogliono essere in grado di utilizzare anche 'python setup.py install', nonché' pip install', consultare: http://stackoverflow.com/questions/21915469/python-setuptools-install-requires -è-ignorato-quando-sovrascrive-cmdclass –