如何在Python源分发包中包含C语言头文件?
解决C头文件无法被Python源分发包包含的问题
你遇到的核心问题是:sdist 默认不会自动包含你的C头文件和源文件,导致安装阶段编译器找不到factorial.h。下面是具体的解决步骤:
1. 创建MANIFEST.in文件显式指定打包文件
在项目根目录下新建一个MANIFEST.in文件,内容如下:
include factorial.h include factorial.c
这个文件的作用是告诉setuptools,在生成源分发包时必须包含这两个C相关文件——它们不属于setuptools默认打包的文件类型,所以需要手动声明。
2. 修正build.py中的路径配置
你build.py里的include_dirs=[" "]是无效的空格路径,编译器无法通过这个路径定位到头文件,需要修改为当前目录:
ffibuilder.set_source( module_name="_example", source=SOURCE, sources=["factorial.c"], include_dirs=["."], # 修改为当前目录 library_dirs=["."], )
3. 重新生成并安装分发包
执行以下命令重新构建和安装:
python setup.py sdist pip install dist/example-0.1.tar.gz
这样修改后,头文件和C源文件就会被正确包含进源分发包,安装时编译器就能顺利找到factorial.h了。
内容的提问来源于stack exchange,提问作者Prokie
相关产品推荐
相关产品推荐

