我正在尝试从大型 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 。所以。
我现在正在尝试分发此扩展模块,并且很难找到描述 setup.py 分发 Cython 模块以及 C 源代码和共享库的最佳实践的资源。我已通读“安装 Python 模块”、“分发 Python 模块”和“分发 Cython 模块”。我了解如何自行分发扩展模块。我不太确定分发扩展模块的依赖项的最佳方式。
Cython 文档表明您应该包含生成的 .cpp 文件以及 .pyx 文件,以防 Cython 不存在,但它没有提供代码来演示如何最好地处理每种情况。它也没有提到如何分发 Cython 模块所依赖的共享库。
我正在挖掘来自 pandas、lxml、pyzmq、h5py 等的 setup.py 脚本,并且发生了相当多的无关工作。如果有人有可能加速此过程的指针或示例代码,我当然会很感激!