我用 C 编写了一个 Python 3 扩展模块,但似乎无法让 Python 导入它。
有什么方法可以让 Python 打印出它尝试加载哪些共享库(Linux 上的 .so)以及为什么会失败?
遗憾的是,我阅读的所有文档都没有真正的帮助,因为没有一个文档以简洁的方式描述本地导入过程。
我尝试的是:
ctypes.CDLL("libmydep1.so")
ctypes.CDLL("libmydep2.so")
try:
import my_main
print("Load python")
except:
ctypes.CDLL("libmylib.so")
print("Load shared object")
总是打印Load shared object
。
libmylib.so
包含 python 入口点,但将其作为 Python 3 扩展加载似乎不起作用,尽管作为共享库加载。
编辑:
Python 不遵守 linux 约定。所以对于一个库,你不要命名它,libmylib.so
但是mylib.so
.
更糟糕的是,它只my_main
在 so 被命名时加载my_main.so
。很烦人。