Comment puis-je lancer un Makefile dans setup.py Je ne sais pas.
j'ai besoin de compiler ICU en utilisant son propre mécanisme de construire. Donc la question:
Comment puis-je lancer un Makefile à partir de setup.py
? Évidemment, je veux qu'il tourne seulement pendant le processus de construction, pas pendant l'installation.
3 réponses
la méthode que j'utilise normalement est de surcharger la commande en question:
from distutils.command.install import install as DistutilsInstall
class MyInstall(DistutilsInstall):
def run(self):
do_pre_install_stuff()
DistutilsInstall.run(self)
do_post_install_stuff()
...
setup(..., cmdclass={'install': MyInstall}, ...)
cela m'a pris un certain temps à comprendre de la distutils
documentation et source, donc j'espère que ça vous évitera la douleur.
Note: Vous pouvez aussi utiliser ce cmdclass
paramètre pour ajouter de nouvelles commandes.
si vous construisez une extension python, vous pouvez utiliser les Extensions distutils/setuptools. Par exemple:
from setuptools import Extension
# or:
# from distutils.extension import Extension
setup(...
ext_modules = [Extension("pkg.icu",
["icu-sqlite/icu.c"]),
]
)
Il ya beaucoup d'options pour construire des extensions, voir la doc: http://docs.python.org/distutils/setupscript.html
il est possible de construire des bibliothèques C avec des distutils (voir le paramètre bibliothèques de distutils).core.setup), mais il se peut que vous ayez à dupliquer des options qui sont déjà dans le Makefile, donc la chose la plus facile à faire est probablement d'étendre la commande install comme expliqué dans d'autres réponses et d'appeler make avec le module subprocess.