You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

lubuntu20.04下auto-py-to-exe打包Qt程序找不到xcb插件如何解决?

问题原因与解决办法

ldd命令作用说明

ldd是Linux系统原生的动态库依赖检查工具,执行ldd libqxcb.so的作用是扫描libqxcb.so这个Qt平台插件依赖的所有动态链接库,确认每个依赖是否都能在系统路径中找到、是否存在版本缺失。从你提交的输出可以确认系统全局的libqxcb.so本身依赖是完整的,问题不属于系统库缺失。

核心错误原因

你用的auto-py-to-exe底层基于PyInstaller实现打包,打包过程中没有自动把你Python虚拟环境中对应版本的Qt platform插件目录打包到输出目录,导致程序运行时找不到对应版本的xcb插件。你之前软链接全局Qt插件的操作不生效,是因为全局Qt版本和你虚拟环境中安装的PyQt/PySide依赖的Qt版本不一致。

解决步骤

  • 第一步:清理之前的错误操作,避免污染系统目录
sudo rm -rf /usr/bin/platforms
  • 第二步:手动拷贝对应版本的插件目录到输出路径
    首先找到你开发用的虚拟环境内的Qt plugins路径,如果你用的是PyQt5,路径格式如下(替换为你实际的虚拟环境路径、Python版本):
    /home/saltz/你的项目路径/venv/lib/python3.8/site-packages/PyQt5/Qt/plugins/platforms
    如果你用的是PySide2,将路径中的PyQt5替换为PySide2即可。
    执行拷贝命令,把整个platforms目录复制到你打包输出的output目录中,和main可执行文件放在同一级:
cp -r 上述的platforms目录完整路径 /home/saltz/Bureau/70 5 applications Qt/test/output/
  • 第三步:临时测试运行
    拷贝完成后执行以下命令测试运行:
cd /home/saltz/Bureau/70 5 applications Qt/test/output
export QT_QPA_PLATFORM_PLUGIN_PATH=./platforms
./main
  • 第四步:打包时自动植入依赖(一劳永逸)
    下次打包时在auto-py-to-exe的配置界面找到附加文件选项,添加上述的platforms目录,设置输出路径为./platforms,重新打包后生成的可执行文件就可以直接双击运行。
  • 可选:如果上述操作完成后仍报错,执行以下命令安装系统层面缺失的xcb相关依赖包:
sudo apt update
sudo apt install -y libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1 libxkbcommon-x11-0

内容的提问来源于stack exchange,提问作者Sebastien ANTUNES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:09:04