如何确定Python共享库的路径和名称?

7 投票
3 回答
4695 浏览
提问于 2025-04-16 05:36

如果你有一个被编译成共享库的Python,怎么找出这个库的名字和路径呢?

我想要的结果类似于 "/usr/local/lib/libpython2.7.so" 或者 "/System/Library/Frameworks/Python.framework/Versions/2.6/Python"(这是在OS X上框架构建的例子)。

3 个回答

3

Amazon Linux上用纯Python进行了测试,测试前需要运行sudo yum install python3来安装Python3。

import sysconfig
sysconfig.get_config_vars('LIBDIR', 'INSTSONAME')  
# -> ['/usr/lib64', 'libpython3.7m.so.1.0']

补充说明:请注意,有些系统版本(比如Linux和Python版本大于等于3.8)将不再包含共享库,而是会静态链接到libpython3.8.a这个文件。

3

请查看这个链接:https://pypi.org/project/find-libpython/

$ pip3 install find_libpython

然后

$ python3 -c 'import find_libpython; print(find_libpython.find_libpython())'
/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/Python

或者简单点:

python3 -m find_libpython
2

我不太确定在Python内部是否能做到这一点,但你可以使用一些标准工具来查找Python可执行文件的共享库依赖。

在Linux系统上,你可以使用命令 ldd <路径>/python 或者 ldd $(which python)
在Mac系统上,可以用命令 otool -L <路径>/python
在Windows系统上,可以运行dependencywalker来查看python.exe的依赖。

撰写回答