根据文件,
在Linux上,需要指定文件名,包括 扩展加载库,因此不能使用属性访问 加载库。 dll加载器的LoadLibrary()方法 应该使用,或者您应该通过创建实例来加载库 通过调用构造函数来调用CDLL:
我正在使用一组外部开发的python脚本。他们需要一个而不是标准库(liblzma
)并使用LoadLibrary
中的ctypes
来加载它 - 通过路径名。我的问题是这些脚本需要在几个不同的Linux安装上运行,并且可能在未来更多。 liblzma
共享库的完整文件名及其位置因系统而异。我已经针对各种lib版本进行了测试,发现没有冲突。
我真正需要的是是一种确定已安装的库的基本名称的方法,以便将适当的名称传递给LoadLibrary
。
我考虑过只使用ldconfig -p
打印现有的lib并解析输出以查找lib名称。还有其他想法吗?
我确实在这里有点偏离我的元素。有问题的脚本只是大型项目的必需部分。
答案 0 :(得分:2)
只要库位于加载程序搜索路径中,您就可以通过相对名称指定它。
$ ls /usr/lib64/libXt.*
/usr/lib64/libXt.so.6.0.0
>>> ctypes.CDLL('libXt.so.6.0.0')
<CDLL 'libXt.so.6.0.0', handle 26b72b0 at 2723c90>