Ejecute una postinstalación de script de Python usando distutils / setuptools
Estoy tratando de agregar una tarea posterior a la instalación a los nombres de Python como se describe en¿Cómo extender distutils con un simple script de postinstalación?. La tarea debe ejecutar un script de Pythonen el directorio lib instalado. Este script genera módulos adicionales de Python que requiere el paquete instalado.
Mi primer intento es el siguiente:
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},
)
Este enfoque funciona, pero por lo que puedo decir tiene dos deficiencias:
Si el usuario ha utilizado un intérprete de Python que no sea el recogido enPATH
, el script de postinstalación se ejecutará con undiferente intérprete que puede causar un problema.No es seguro contra el funcionamiento en seco, etc., que podría remediar envolviéndolo en una función y llamándolodistutils.cmd.Command.execute
.¿Cómo podría mejorar mi solución? ¿Hay alguna forma recomendada / mejor práctica para hacer esto? Me gustaría evitar tirar de otra dependencia si es posible.