分发独立的libpython路径

Psi*_*rus 9 python linux path

在较新的Ubuntu/Debian版本下,libpython2.7.so/usr/lib/i386-linux-gnu/libpython2.7.so/usr/lib/x86_64-linux-gnu/libpython2.7.so等等之下/usr/lib/libpython2.7.so,无论架构如何,都可以找到它们.我没有检查其他发行版.如何找到libpython2.7.sopython 的路径?

Chi*_*ggs 8

使用pkg-config不是最佳选择 - 它不会区分不同的Python安装,只返回系统安装.最好使用Python可执行文件来发现它的位置libpythonX.Y.so.

从Python内部:

   from distutils import sysconfig;
   print sysconfig.get_config_var("LIBDIR")
Run Code Online (Sandbox Code Playgroud)

或者在Makefile中:

   PYTHON_LIBDIR:=$(shell python -c 'from distutils import sysconfig; print sysconfig.get_config_var("LIBDIR")')
Run Code Online (Sandbox Code Playgroud)

这将从Python可执行文件的第一个位置发现位置$PATH,因此如果系统上有多个Python安装,它将起作用.

感谢尼尔·菲茨杰拉德指出这一点.

  • 它给了我`/ usr/lib`,而它位于`/ usr/lib/x86_64-linux-gnu` (7认同)

lut*_*zky 0

我假设您正在寻找针对此文件的链接。Python 通常会安装pkgconfig一些信息来帮助对其进行编译。特别是对于该.so文件,您应该使用pkg-config --libs python-2.7. 来自Python:

import subprocess
subprocess.check_output(["pkg-config", "--libs", "python-2.7"])
Run Code Online (Sandbox Code Playgroud)

如果显示的唯一标志是-lpython2.7,您可能需要考虑阅读/etc/ld.so.conf以查看链接器查找其库的默认位置。