我正在尝试使用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
文件夹的正确方法?谢谢!