我有一个仅在我的 Python 扩展中使用的标头 C++ 库。我希望能够将它们安装到 Python 的包含路径中,这样我就可以使用python3 setup.py build
. 我有部分能力,但有两件事我无法工作(见下文):
如何使用
python3 setup.py install
安装头文件?目前我只得到一些*.egg
文件,但没有安装头文件。如何保留模块的文件结构?当前文件结构被错误地展平。
什么有效
与以下setup.py
from setuptools import setup
setup(
name = 'so',
description = 'Example',
headers = [
'so.h',
],
)
我可以将模块上传到 PyPi:
python3 setup.py bdist_wheel --universal
twine upload dist/*
然后使用 pip 安装它:
pip3 install so
然后在我的系统上找到标题here
/usr/local/include/python3.6m/so/so.h
当我用 Python 编译扩展时可用。
如何使用“python3 setup.py install”?
使用这种策略我不能简单地运行
python3 setup.py install
在这种情况下so*.egg
,安装了一些,但头文件没有存储在编译器可用的地方。
如何保留文件结构?
当模块有点复杂,并且有一些目录层次结构时,我也会遇到问题。对于以下setup.py
from setuptools import setup
setup(
name = 'so',
description = 'Example',
headers = [
'so.h',
'so/implementation.h',
],
)
问题是标头安装到
/usr/local/include/python3.6m/so/so.h
/usr/local/include/python3.6m/so/implementation.h
从而使原始文件结构变平。
如何解决这两个问题?