如何通过 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
添加此答案以供参考。
我有一个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
添加此答案以供参考。