使用CFFI构建Python-C扩展,但Setuptools在构建中不包含自定义头文件

时间:2019-07-09 00:02:25

标签: python makefile setuptools python-cffi cffi

我正在尝试使用Python中的CFFI包为已存在的C代码创建Python接口。

我可以按照this blog post来编译C库。现在,我想使它可用,而无需对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文件夹的正确方法?谢谢!

0 个答案:

没有答案