没有找到pyinstaller GLIBC_2.25,但是另一个脚本可以工作



我在Ubuntu 18.04上使用pyinstaller,用一个简单的Python脚本创建了一个可执行文件,并在另一台计算机上进行了测试(也使用Ubutnu 18(,效果非常好。

然而,当使用更复杂的脚本(更多库导入(尝试相同操作时,可执行文件在另一台计算机中失败,并出现错误

ImportError: /lob/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.25' not found

这不可能是Python不兼容(请参阅https://github.com/pyinstaller/pyinstaller/issues/4758),因为其他脚本确实运行良好。因此,它很可能是基于第二个脚本导入的一些库。

我如何将导入的库包含在Pyinstaller制作的可执行文件中(如果这就是这个错误的根源(?

解决方案A

我还没有确认这个解决方案,但它有时会有所帮助。删除目录/构建和/dist,然后尝试使用pyinstaller再次创建可执行文件。

解决方案B

至少对我来说,解决方案是在旧版本的操作系统上构建可执行文件。

我看到了同样的错误。

ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /tmp/_MEIjdcWu4/./libX11.so.6)
[32614] Failed to execute script 'test_executable' due to unhandled exception!

我在Ubuntu 22.04上用Pyinstaller构建了我的executable。然后我在旧的Ubuntu 20.04上复制并运行了可执行文件,遇到了错误。

根据下面的评论,这可能是一个兼容性问题,在较新的操作系统上构建的可执行文件与较旧的操作系统不兼容。

"值得一提的是,问题可能是生成的程序与系统库冲突,阻止DRI驱动程序无法正确加载。

罪魁祸首可能是标准的c/c++库(libgcc_s.so.1,libstdc++.so.6(或X11库(libX11.so.6、libXau.so.6,libXdmcp.so.6、libXext.so.6和`libXrender.so.1*.(。也许更可能前者多于后者。

例如,如果构建系统上的libstdc++.so.6比一个由目标系统使用,那么非绑定库将由于丢失的符号(存在于较新的,库的系统版本,但不在捆绑版本中(。这是实际上,linux上的纯二进制软件是一个非常常见的问题,尤其是在更多的出血边缘分布上。在这些情况下,删除有问题的库的捆绑版本可能会有所帮助。

(系统libgvfsdbus.so也有类似的问题,但缺少捆绑的libglib-2.0.so.0中没有的符号可能比系统上可用的glib库旧("来源:https://github.com/cryptoadvance/specter-desktop/issues/373#issuecomment-694476451

最新更新