Сборка Python-C Extension с использованием CFFI, но Setuptools не включает в себя файлы пользовательских заголовков в сборке - PullRequest
2 голосов
/ 09 июля 2019

Я пытаюсь использовать пакет CFFI в Python для создания интерфейса Python для уже существующего C-кода.

Я могу скомпилировать библиотеку C, следуя этому сообщению в блоге .Теперь я хочу сделать так, чтобы эта библиотека Python была доступна без каких-либо модных обновлений sys.path.

Я обнаружил, что, возможно, создание дистрибутива с помощью функции Python setuptools setup () позволит это сделать, и я заставил его работать в основном, создав файл setup.py как таковой

import os
import sys

from setuptools import setup, find_packages

os.chdir(os.path.dirname(sys.argv[0]) or ".")

setup(
    name="SobelFilterTest",
    version="0.1",
    description="An example project using Python's CFFI",
    packages=find_packages(),
    install_requires=["cffi>=1.0.0"],
    setup_requires=["cffi>=1.0.0"],
    cffi_modules=[
        "./src/build_sobel.py:ffi",
        "./src/build_file_operations.py:ffi",
    ],
)

, ноЯ сталкиваюсь с этой ошибкой

build/temp.linux-x86_64-3.5/_sobel.c:492:19: fatal error: sobel.h: No such file or directory

Из того, что я могу сказать, проблема в том, что файл sobel.h не загружается в папку build, созданную setuptools.setup().Я искал предложения, что делать, включая использование Extensions() и запись файла MANIFEST.in, и оба, кажется, добавляют относительный путь к правильным заголовочным файлам:

MANIFEST.in
setup.py
SobelFilterTest.egg-info/PKG-INFO
SobelFilterTest.egg-info/SOURCES.txt
SobelFilterTest.egg-info/dependency_links.txt
SobelFilterTest.egg-info/requires.txt
SobelFilterTest.egg-info/top_level.txt
src/file_operations.h
src/macros.h
src/sobel.h

Но я все еще получаю то же самоесообщение об ошибке.Есть ли правильный способ добавить файл заголовка в папку build?Спасибо!

...