使用Cython扩展modu分发共享库和一些C代码

2024-05-20 13:42:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个大型C++共享库(LIbBug,so)中获取一些函数,并通过Cython将它们公开给Python。为此,我得到了一个小C++文件(小.CPP),它提供了一个围绕我需要的共享库的功能的薄包装,它使Cython(PySmall .Pyx)很容易调用。

libbig.so->;small.cpp,small.h->;libsmall.so->;pysmall.pyx->;pysmall.cpp->;pysmall.so

我可以在自己的计算机上构建并运行这个扩展模块:我只需将small.cpp编译成libsmall.so,然后在setup.py中的扩展对象中说“libraries=['small']”来构建扩展模块pysmall.so。

我现在正试图分发这个扩展模块,我很难找到描述setup.py分发Cython模块、C源和共享库的最佳实践的资源。我已经读完了“Installing Python Modules”、“Distributing Python Modules”和“Distributing Cython Modules”。我了解如何单独分发扩展模块。对于分发扩展模块依赖项的最佳方式,我不太确定。

Cython文档指出,在Cython不存在的情况下,您应该包括生成的.cpp文件和.pyx文件,但它没有提供代码来演示如何最好地处理每种情况。它也没有提到如何分发Cython模块所依赖的共享库。

我正在翻阅pandas、lxml、pyzmq、h5py等等的setup.py脚本,有很多无关的工作正在发生。如果有人有指针或示例代码可以加速这个过程,我当然会很感激!


Tags: 模块文件pygtmodulessosetup情况