Расширения сценариев установки Python, как вы включаете.H файл?
Итак, у меня есть каталог, который выглядит примерно так:
home
setup.py
some_python_file.py
ext
__init__.py
c_file1.c
c_file2.c
ext_header.h
очевидно, что файл заголовка необходим для компиляции файлов c, но проблема в том, что я не могу заставить сценарий установки включить файл заголовка.
мой объект расширения, что-то вроде этого:
Extension('ext.the_extension', ['ext/c_file1.c', 'ext/c_file2.c'])
, который работает, но не включает файл заголовка. Если я изменю его на:
Extension('ext.the_extension', ['ext/c_file1.c', 'ext/c_file2.c', 'ext_header.h'])
Она включает в себя '.H ' файл, но затем не строится при запуске install. Вместо этого он дает и ошибка error: unknown file type '.h' (from 'ext/ext_header.h')
если я включаю файл заголовка в качестве файла данных, как это:
data_files=[('ext', ['ext/ext_header.h'])]
это вообще не работает, the .файл h даже не попадает в файл манифеста.
Итак, мой queustion, как вы включаете это расширение с файлом заголовка, чтобы python setup.py install
построит ли он правильно?
2 ответов
у меня такое чувство, что pyfunc находится на пути к более стандартному решению, но я нашел другое решение самостоятельно. Я понятия не имею, является ли это хорошим решением или просто взломом, но все, что я сделал, это добавил файл заголовка в манифест.внутри. В документации на самом деле не кажется, что это то, что манифест.в файле есть for, но он работает. Мой манифест.в файле теперь выглядит так:
include ext/ext_header.h
который включает файл и успешно компилируется при запуске python setup.py install
документы,
module1 = Extension('demo',
define_macros = [('MAJOR_VERSION', '1'),
('MINOR_VERSION', '0')],
include_dirs = ['/usr/local/include'],
libraries = ['tcl83'],
library_dirs = ['/usr/local/lib'],
sources = ['demo.c'])
вы должны предоставить включенные файлы через "include_dirs".
почему это не работает для вас?