我正在尝试使用 Python 中的 CFFI 包为现有的 C 代码创建 Python 接口。
我可以按照这篇博文编译一个 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
文件夹中?谢谢!