我想从Python应用程序中调用C库.我不想包装整个API,只包含与我的案例相关的函数和数据类型.在我看来,我有三个选择:
我不确定2)或3)是否是更好的选择.3)的优点是它ctypes是标准库的一部分,结果代码将是纯Python - 尽管我不确定这个优势实际上有多大.
两种选择都有更多优点/缺点吗?你推荐哪种方法?
编辑:感谢您的所有答案,他们为希望做类似事情的人提供了一个很好的资源.当然,这个决定仍然是针对单个案例做出的 - 没有人"这是正确的事情"的答案.对于我自己的情况,我可能会选择ctypes,但我也期待在其他项目中尝试Cython.
由于没有一个真正的答案,接受一个有点武断; 我选择了FogleBird的答案,因为它提供了对ctypes的一些很好的洞察力,它目前也是最高投票的答案.但是,我建议阅读所有答案以获得良好的概述.
再次感谢.
我想通过使用BLAS和LAPACK在C或C++中编写一些模块来扩展python和numpy.我还希望能够将代码作为独立的C/C++库进行分发.我希望这个库使用单精度和双精度浮点数.我将编写的函数的一些示例是用于求解线性系统或加速一阶方法的共轭梯度.有些函数需要从C/C++代码调用Python函数.
在使用Python/C API和Numpy/C API稍微玩了一下之后,我发现许多人主张使用Cython(例如参见这个问题或者这个问题).我不是Cython的专家,但似乎在某些情况下,你仍然需要使用Numpy/C API并知道它是如何工作的.鉴于我已经拥有(一些)关于Python/C API的知识而没有关于Cython的知识,我想知道继续使用Python/C API是否有意义,并且如果使用此API比Cython有一些优势.在未来,我肯定会开发一些不涉及数值计算的东西,所以这个问题不仅仅是关于numpy.我喜欢Python/C API的一个原因是我学到了一些关于Python解释器如何工作的东西.
谢谢.