【发布时间】:2019-01-06 21:12:19
【问题描述】:
我正在开发一个 C 库(使用 cmake 作为构建系统)和一个用 cython 编写的相应 python 扩展。
构建过程由 cmake 进行,它调用 cython 可执行文件生成 C 文件。该文件被编译成一个 python_library.so 链接 针对原生 library.so 和其他依赖项。
该库按预期工作,我可以将PYTHONPATH 设置为构建目录,运行python 和import 并执行包装的python 代码。
剩下的问题是如何安装/打包 python 模块。
据我所知,创建python包的推荐方法是在setup.py文件中使用setuptools / distutils。
当然可以在setup.py 文件中定义一个C Extension(可选地使用cython)。但是,我希望编译由 cmake 处理(它涉及一些依赖库等)
所以基本上,我想告诉 python 整个包是由现有的 python_library.so 文件定义的。这可能吗?
注意:有一个related 问题。但是 OP 已经想出了如何打包扩展。
【问题讨论】:
-
something like this 会是解决方案吗?让 setup.py 调用 cmake?
-
感谢您提供的链接,但这并不是我的想法。在给定的示例中,cmake 和 setup.py 的角色是相反的。我对 cmake 构建一切都很好。我只是想让 setup.py 运行测试/构建一个 egg 或类似的。