python distutils, написание расширений c со сгенерированным исходным кодом

Я написал библиотеку расширений Python на C и в настоящее время использую distutils для ее создания. У меня также есть скрипт Python, который создает файл .h, который я хотел бы включить в свое расширение.

Можно ли настроить такую ​​​​зависимость с помощью distutils? Сможет ли он заметить, когда мой сценарий изменится, восстановить файл .h и перекомпилировать расширение?


person user424599    schedule 18.08.2010    source источник


Ответы (1)


Вы можете сделать это, переопределив команду build_ext из distutils.

from distutils.core import setup, Extension
from distutils.command.build_ext import build_ext as _build_ext

module=Extension(....) # The way to build your extension

class build_ext(_build_ext):
    description = "Custom Build Process"

    def initialize_options(self):
        _build_ext.initialize_options(self)
    def finalize_options(self):
        _build_ext.finalize_options(self)

    def run(self):
        # Code to generate your .h
        .....

        # Start classic Extension build
        _build_ext.run(self)

setup(...
      ext_modules = [module],
      cmdclass = { "build_ext": build_ext},
      ...)

Поэтому каждый раз, когда вы создаете расширение, .h создается заново.

person ohe    schedule 08.09.2010
comment
Спасибо! Я включил distutils.dep_util.newer в ваш пример, чтобы получить желаемое поведение. - person user424599; 09.09.2010