Как я могу запустить Makefile в setup.py ?
Вопрос
Мне нужно скомпилировать Отделение интенсивной терапии используя свой собственный механизм сборки.Поэтому возникает вопрос:
Как я могу запустить Makefile из setup.py
?Очевидно, я хочу, чтобы он запускался только в процессе сборки, а не во время установки.
Решение
Метод, который я обычно использую, заключается в переопределении рассматриваемой команды:
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}, ...)
Это заняло у меня довольно много времени, чтобы понять из distutils
документация и исходный код, так что я надеюсь, что это избавит вас от лишних хлопот.
Примечание:вы также можете использовать это cmdclass
параметр для добавления новых команд.
Другие советы
Если вы создаете расширение python, вы можете использовать расширения distutils / setuptools.Например:
from setuptools import Extension
# or:
# from distutils.extension import Extension
setup(...
ext_modules = [Extension("pkg.icu",
["icu-sqlite/icu.c"]),
]
)
Существует множество вариантов создания расширений, смотрите Документы: http://docs.python.org/distutils/setupscript.html
Можно создавать библиотеки C с помощью distutils (см. Параметр libraries в distutils.core.setup), но вам, возможно, придется дублировать параметры, которые уже есть в файле Makefile, поэтому, вероятно, проще всего расширить команду install, как описано в других ответах, и вызвать make с помощью модуля subprocess .