如何通过 python 脚本使用 运行 .so 文件

How to run .so files using through python script

我有一个c程序(.c文件)。我正在将其转换为共享对象 (.so)。我如何从我的 python 代码调用和 运行 共享对象?如果可能,请向我推荐可以帮助我完成此任务的库列表。

如果您想在共享对象中调用函数,标准模块 ctypes 就是您所追求的。不需要任何外部库。

加载库:

from ctypes import *
# either
libc = cdll.LoadLibrary("libc.so.6")
# or
libc = CDLL("libc.so.6")

然后从库中调用函数,与调用Python函数相同:

print(libc.time(None))

使用推荐方法的人请注意。它不适用于 windows 并且适用于 linux windows 函数的代码如下:

from ctypes import *
libc = cdll.msvcrt

并调用它,

print(libc.time(None))

如果.so文件暴露了一个PyInit_<module_name>函数,它的路径(或父目录的路径)可以添加到环境变量PYTHONPATH。然后你可以通过 import <module_name> 导入模块。注意:看起来 .so 文件的名称必须与公开的模块名称 <module_name> 相匹配。

这里有更多信息:https://docs.python.org/3/extending/building.html

添加此答案以供参考。