执行Python文件时出现libpython3.9.so加载错误:缺少GLIBC_2.29
解决GLIBC_2.29版本缺失导致的Python可执行文件运行错误
问题重现
执行PyInstaller打包的Python可执行文件时触发错误:
[20636] Error loading Python lib '/tmp/_MEIlOFEGz/libpython3.9.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /tmp/_MEIlOFEGz/libpython3.9.so.1.0)
可行解决方案
1. 低版本GLIBC环境重新打包
- 找一台GLIBC版本≤目标系统的机器(或用Docker拉取如
ubuntu:18.04这类低版本镜像),搭建Python3.9环境后重新用PyInstaller打包。PyInstaller会绑定打包环境的依赖库,低版本环境打包的程序能兼容更低的系统。
2. 替换兼容的libpython库
- 从目标系统已安装的Python3.9目录中复制
libpython3.9.so.1.0,替换程序运行时临时目录(如/tmp/_MEIlOFEGz/)里的对应文件;或者将兼容库放到程序同目录,运行前执行export LD_LIBRARY_PATH=.再启动程序。
3. 静态编译Python后打包
- 编译静态链接的Python3.9,这样打包出的程序不依赖系统GLIBC:
用这个静态Python环境运行PyInstaller重新打包程序。wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz tar xzf Python-3.9.18.tgz cd Python-3.9.18 ./configure --enable-static --prefix=/usr/local/python39-static make -j$(nproc) && sudo make install
4. 升级系统GLIBC(谨慎操作)
- 若目标系统允许,可手动升级GLIBC到2.29+,但直接升级系统核心库可能导致系统崩溃,务必先备份数据:
升级后重启系统,部分旧程序可能无法兼容,需做好测试。wget https://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz tar xzf glibc-2.29.tar.gz cd glibc-2.29 mkdir build && cd build ../configure --prefix=/usr make -j$(nproc) sudo make install
内容的提问来源于stack exchange,提问作者moskino11
相关产品推荐
相关产品推荐

