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

Ubuntu18.04下cx_Freeze打包含cv2的Python程序调用cv2.imshow崩溃求助

问题根因

从QT_DEBUG_PLUGINS=1的输出可定位核心错误:cv2 内置的Qt xcb平台插件libqxcb.so所依赖的libQt5XcbQpa动态库未被cx_Freeze自动收集到构建目录中,导致插件初始化失败。

解决步骤
  • 定位本地缺失的依赖文件路径
    执行命令查找目标库位置:
    find / -name "libQt5XcbQpa*" 2>/dev/null
    通常该文件位于Python环境的cv2安装目录下,路径类似:<Python环境路径>/lib/python3.7/site-packages/cv2/qt/lib/
  • 修改cx_Freeze构建脚本,手动纳入cv2的Qt相关依赖
    替换原有构建脚本为如下内容:
    import sys
    from cx_Freeze import setup, Executable
    import os
    import cv2
    
    # 自动定位cv2内置的Qt资源根目录
    cv2_qt_root = os.path.join(os.path.dirname(cv2.__file__), "qt")
    
    build_exe_options = {
        "packages": ["os", "cv2", "numpy"],
        "excludes": [],
        # 手动复制cv2的Qt依赖库、插件目录到构建输出
        "include_files": [
            (os.path.join(cv2_qt_root, "lib"), "lib/cv2/qt/lib"),
            (os.path.join(cv2_qt_root, "plugins"), "lib/cv2/qt/plugins")
        ]
    }
    
    setup(
        name="test",
        version="0.1",
        description="My GUI application!",
        options={"build_exe": build_exe_options},
        executables=[Executable("cv2_test.py")]
    )
    
  • 重新执行构建
    运行命令生成可执行文件:python setup.py build
  • 运行前配置Qt插件搜索路径
    进入构建输出目录,设置插件路径后启动程序,避免路径识别错误:
    export QT_QPA_PLATFORM_PLUGIN_PATH=./lib/cv2/qt/plugins/platforms
    ./cv2_test
    
常见补充处理
  • 若运行时仍提示其他xcb相关动态库缺失,对照调试日志中提示的*.so文件名,查找本地源文件路径后,添加到include_files的复制规则中即可。
  • 目标运行的Ubuntu 18.04设备需安装基础xcb运行依赖,执行sudo apt install libxcb-xinerama0 libxcb-cursor0即可,无需单独安装Python相关包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 03:24:03