Вопрос

Мне нужно скомпилировать Отделение интенсивной терапии используя свой собственный механизм сборки.Поэтому возникает вопрос:

Как я могу запустить 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 .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top