【发布时间】:2012-06-16 03:09:38
【问题描述】:
我正在尝试从大型 C++ 共享库 (libbig.so) 中获取一些函数,并通过 Cython 将它们公开给 Python。为此,我有一个小的 C++ 文件 (small.cpp),它为我需要的共享库中的功能提供了一个精简的包装器,以一种易于通过 Cython (pysmall.pyx) 调用的方式。
libbig.so -> small.cpp, small.h -> libsmall.so -> pysmall.pyx -> pysmall.cpp -> pysmall.so
我可以在自己的计算机上构建和运行这个扩展模块:我只是将 small.cpp 编译成 libsmall.so,然后在 setup.py 的 Extension 对象中说“libraries=['small']”来构建扩展模块 pysmall.so.
我现在正在尝试分发此扩展模块,并且很难找到描述 setup.py 分发 Cython 模块以及 C 源代码和共享库的最佳实践的资源。我读过“Installing Python Modules”、“Distributing Python Modules”和“Distributing Cython Modules”。我了解如何自行分发扩展模块。我不太确定分发扩展模块依赖项的最佳方式。
Cython 文档表明您应该包含生成的 .cpp 文件以及 .pyx 文件,以防 Cython 不存在,但它没有提供代码来演示如何最好地处理每种情况。它也没有提到如何分发 Cython 模块所依赖的共享库。
我正在研究来自 pandas、lxml、pyzmq、h5py 等的 setup.py 脚本,并且发生了很多无关的工作。如果有人有可能加速这个过程的指针或示例代码,我当然会很感激!
【问题讨论】: