私信  •  关注

Gino Mempin

Gino Mempin 最近创建的主题
Gino Mempin 最近回复了
8 月前
回复了 Gino Mempin 创建的主题 » 在Azure Devops上的Linux上的pyinstaller中找不到Python库

你好像有点不标准 python 安装:

我在Linux中安装了python

$ which python 
/grid/common/pkgs/python/v2.7.6/bin/python

可能会导致 pyinstaller 找不到 libpython 系统中的文件。从 When Things Go Wrong 部分 pyinstaller安装程序 文件:

但是,其中一个错误可能令人费解: IOError("Python library not found!") PyInstaller需要打包Python库,它是 Python解释器的主要部分,作为动态负载链接 图书馆。此文件的名称和位置因 正在使用平台。

在Linux和Python2.7上,当您安装 python2.7-dev ,那些 libpython* 文件通常位于 /usr/lib/x86_64-linux-gnu/ :

$ apt-get install python2.7-dev
$ find /usr/lib -name libpython*
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7-pic.a
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.a
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so
/usr/lib/x86_64-linux-gnu/libpython2.7.a
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1
/usr/lib/x86_64-linux-gnu/libpython2.7.so

在我的机器上,当我跑 pyinstaller安装程序 在不设置任何其他选项的情况下,它会自动使用 libpython语言 /usr/lib/x86_64-linux-gnu :

1632 INFO: Python library not in binary dependencies. Doing additional searching...
1654 INFO: Using Python library /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 

对于使用非标准路径的案例,该帮助页还提供了一个解决方案:

PyInstaller查找python库的位置是 在不同的操作系统中是不同的,但是 /lib /usr/lib 是 已签入大多数系统。如果你不能把python库放在那里, 尝试在环境变量中设置正确的路径 LD_LIBRARY_PATH 在Linux或 DYLD_LIBRARY_PATH 在OSX中。

现在,我不知道你是如何在你的系统上安装Python的,所以我不知道你的 libpython语言 文件是(或者如果它们甚至存在)。你能做的是:

  1. 找到通往 libpython语言 文件夹
    • 可能在下面 /grid/common/pkgs/python/v2.7.6/lib ?
    • 你可以的 find /path/to/pkgs -name libpython*
  2. 如果没有 libpython语言 文件,你需要先安装它。
    • 在Linux上,这通常由 apt-get install python2.7-dev
  3. 将路径添加到 libpython语言* 文件到您的 图书馆路径

另一方面,我不熟悉Azure DevOps(如您在标题中所示),但我不建议安装 蟒蛇 (以及所有其他dep/packages)到一些非标准路径,特别是当您需要引用它的其他工具时。