使用PyInstaller生成Python可执行文件时加载libpython3.5m.so.1.0失败
解决PyInstaller打包后运行找不到
libpython3.5m.so.1.0的问题 你遇到的是PyInstaller打包时未正确处理Python共享库定位的典型问题,下面是几个针对性的解决方法,你可以逐一尝试:
方法1:指定Python库路径重新打包
打包时直接通过--paths参数告知PyInstaller你的Python共享库所在目录,示例命令:
pyinstaller --paths /usr/lib/python3.5/ your_script.py
如果不知道libpython3.5m.so.1.0的具体位置,先通过以下命令查找:
find / -name "libpython3.5m.so.1.0" 2>/dev/null
把找到的路径替换到上面的打包命令中即可。
方法2:手动复制库文件到可执行目录
- 用上述
find命令定位到libpython3.5m.so.1.0的位置 - 将该文件复制到报错提示的目录(
~/PycharmProjects/CetPar/ceteris_paribus/control/build/controller/) - 再次运行生成的可执行文件,验证问题是否解决
方法3:用--add-binary参数强制包含库文件
打包时通过--add-binary参数直接将库文件嵌入到包中,命令示例:
pyinstaller --add-binary "/path/to/libpython3.5m.so.1.0:." your_script.py
这里的:.表示将库文件放到可执行文件的同级目录下。
方法4:检查PyInstaller与Python版本兼容性
Python3.5属于较旧版本,部分新版PyInstaller对其支持不佳。建议安装适配的PyInstaller版本:
pip install pyinstaller==3.6
这个版本是对Python3.5支持较好的稳定版本。
方法5:通过patchelf设置可执行文件的RUNPATH
如果export环境变量无效,可以尝试修改可执行文件的运行路径(需要先安装patchelf工具):
patchelf --set-rpath /path/to/python/lib your_executable_file
替换/path/to/python/lib为实际的Python库目录,这样可执行文件启动时会自动在指定路径查找依赖库。
建议从方法1开始尝试,逐步排查,应该能解决你遇到的问题。
内容的提问来源于stack exchange,提问作者Thalamus
相关产品推荐
相关产品推荐

