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

问题描述 投票:0回答:3

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

python shared-libraries ctypes
3个回答
19
投票

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

加载库:

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

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

print(libc.time(None))

3
投票

使用推荐方法的人请注意。它不适用于Windows,适用于Linux,Windows功能的代码如下:

from ctypes import *
libc = cdll.msvcrt

并称之为,

print(libc.time(None))

0
投票

如果 .so 文件公开了

PyInit_<module_name>
函数,则可以将其路径(或父目录的路径)添加到环境变量
PYTHONPATH
中。然后您可以通过
import <module_name>
导入模块。注意:看起来 .so 文件的名称必须与暴露的模块名称
<module_name>
匹配。

更多信息请参见:https://docs.python.org/3/extending/building.html

添加此答案以供参考。

© www.soinside.com 2019 - 2024. All rights reserved.