我正在探索python。我对python绑定感到好奇。任何人都可以解释一下,如何有可能从Python访问C库。
有几种方法可以从Python调用用C编写的代码。
首先,标准库中有ctypes模块。它允许您加载动态链接库(Windows.so上为DLL,Linux上为共享库)并直接从Python调用这些库中的函数。此类库通常用C编写。
.so
其次,对于CPython,有Python / C API。它可以以两种主要方式使用:
动态链接库可以用C编写,这样CPython会将其视为模块(您可以将其导入Python程序中)。Python / C API允许库定义用C编写但仍可从Python调用的函数。该API非常强大,并提供了用于操纵所有Python数据类型和访问解释器内部的函数。
使用C API的第二种方法是将Python嵌入用C编写的程序中。然后C程序可以创建用C编写的内置模块并公开C函数,就像在动态链接库方法中一样。该API还允许程序执行脚本,然后可以导入和使用内置模块。这可用于创建基于Python的插件系统。
“绑定”既可以使用ctypes实现为纯Python库,也可以使用Python / C API实现为动态链接库。第二个选项有时与诸如SWIG之类的工具一起使用,它可以通过生成“样板代码”来简化任务,而Boost.Python可以在Python / C API之上提供C API,从而更轻松地与C 进行接口码。
进一步阅读:外部功能接口