Ubuntu16.04打包PyQt5应用时cx_Freeze依赖库缺失求助
我之前在Ubuntu 16.04.02打包PyQt5应用时也踩过一模一样的坑,给你分享几个亲测有效的解决办法:
解决ICU 56库(libicuuc.so.56、libicudata.so.56)缺失问题
Ubuntu 16.04默认自带的是ICU 55,而新版PyQt5依赖的ICU版本更高,你可以选以下两种方案:
方案1:手动下载安装ICU 56的deb包
直接从Ubuntu安全仓库获取对应版本的包:
sudo wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu56_56.1-6ubuntu0.4_amd64.deb sudo dpkg -i libicu56_56.1-6ubuntu0.4_amd64.deb # 如果出现依赖错误,执行以下命令修复 sudo apt-get install -f
方案2:通过PPA升级ICU
添加维护旧版本Ubuntu软件包的PPA,然后安装ICU 56:
sudo add-apt-repository ppa:jonathonf/icu sudo apt-get update sudo apt-get install libicu56
备选方案:降级PyQt5适配ICU 55
如果不想升级系统库,也可以降级PyQt5到兼容ICU 55的版本(比如5.8.x系列):
pip install PyQt5==5.8.2
解决libQt5EglFSDeviceIntegration.so.5缺失问题
这个库属于Qt5的EGL FS设备集成模块,Ubuntu默认没预装,直接安装对应包即可:
sudo apt-get install libqt5eglfsdeviceintegration5
如果安装后cx_Freeze还是找不到,你可以在setup.py里手动指定这个库的路径,让打包工具强制包含它:
build_exe_options = { "include_files": [ "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/eglfs/libQt5EglFSDeviceIntegration.so.5" ] } setup( # 你的其他配置 options={"build_exe": build_exe_options}, # ... )
额外小技巧:如果还有其他库缺失,可以用ldd命令检查PyQt5核心模块的依赖,比如:
ldd /usr/lib/python3/dist-packages/PyQt5/QtWidgets.so
从输出里找缺失的库,再针对性安装就行。
内容的提问来源于stack exchange,提问作者trinkner
相关产品推荐
相关产品推荐

