Python访问动态库的方式速记

详细信息清参考《Python CookBook》第三版第十五章和扩展和嵌入Python解释器

ctype

有一些 C 函数已经被编译到共享库中(或者Go编译成的C语言风格动态库)。希望可以使用纯 Python 代码调用这些函数,而不用编写额外的 C 代码或使用第三方扩展工具。

对于需要调用 C 代码的一些小的问题,通常使用 Python 标准库中的 ctypes 模块就足够了。要使用 ctypes ,你首先要确保你要访问的 C 代码已经被编译到和 Python
解释器兼容(同样的架构、字大小、编译器等)的某个共享库中了。

Python.h

想不依靠其他工具,直接使用 Python 的扩展 API 来编写一些简单的 C 扩展模块。

这个不光需要编译好的动态库,还需要对应的头文件。

  • 第一步:准备好目标动态库和对应的头文件
  • 第二步:# include "Python.h"编写C语言代码对目标库函数进行Python封装
  • 第三步:编写setup.py,通过python3 buildlib.py build_ext --inplace绑定扩展模块
  • 第四步: import使用

Swig

  • 第一步:准备目标动态库和头文件
  • 第二步:编写Swig接口文件
  • 第三步:swig转换
  • 第四步:编写setup.py,通过python3 buildlib.py build_ext --inplace绑定扩展模块
  • 第五步:import使用

Cython

  • 第一步:准备目标动态库和头文件
  • 第二步:编写pxd文件
  • 第三步:编写pyx文件
  • 第四步:编写setup.py,通过python3 buildlib.py build_ext --inplace绑定扩展模块
  • 第五步:import使用
posted @ 2021-10-26 22:51  Tacey Wong  阅读(294)  评论(0编辑  收藏  举报