为什么该库无法使用ctypes加载?

时间:2019-08-08 18:58:31

标签: python python-2.7

在linux上,我无法获取find_library返回找到的库名。完整文件名为 volumes: - name: "pgdata-vol" hostPath: path: /tmp/vols/pgdata ,位于目录libmystuff.so中。文档将其命名描述如下。

  

尝试查找库并返回路径名。 name是没有任何前缀(如lib),后缀(如.so,.dylib或版本号)的库名(这是posix链接器选项-l所使用的形式)。如果找不到库,则返回None。

我尝试使用它,如下所示,但libname始终为“ None”。

/opt/myapp/mylibs

我还尝试在shell环境中设置import ctypes import os from ctypes.util import find_library os.environ['LD_LIBRARY_PATH'] = '/opt/myapp/mylibs' libname = find_library("mystuff")

1 个答案:

答案 0 :(得分:0)

您使用的docs for the old python version说:

  

find_library()函数的目的是以类似于编译器的方式找到库 。 [...]在Linux上,find_library()尝试运行外部程序(/ sbin / ldconfig,gcc和objdump)以查找库文件。

它不会尝试加载库,而是doesn't use LD_LIBRARY_PATH in versions earlier than Python 3.6

请注意文档中的其他建议:

  

如果使用ctypes包装共享库,则最好在开发时确定共享库名称,然后将其硬编码到包装器模块中,而不是在运行时使用find_library()来定位该库。