解决在 Docker 中启动 labelImg 的相关报错

文章目录

  • 一、简介
  • [二、libGL 报错&解决方法](#二、libGL 报错&解决方法)
  • [三、xcb 插件报错&解决方法](#三、xcb 插件报错&解决方法)
  • 小结

一、简介

  1. 本文提到的报错信息,是在 ubuntu-22.04 中通过 miniconda3 创建的 python-3.10 版本的虚拟环境下安装的labelImg提示的报错。推荐使用 conda 指令安装:conda install -c conda-forge labelimg -y,使用 pip 安装就会有下面的各类报错信息。

  2. 参考如下版本信息,如果有相关的报错可以参考本文的解决方法。部分问题也可以通过 减低版本 来解决,需要具体情况具体分析。这里不保证完全有效,仅供参考。

    bash 复制代码
    # Name                    Version                   Build  Channel
    _libgcc_mutex             0.1                        main  
    _openmp_mutex             5.1                       1_gnu  
    bzip2                     1.0.8                h5eee18b_6  
    ca-certificates           2025.12.2            h06a4308_0  
    expat                     2.7.3                h7354ed3_4  
    labelimg                  1.8.6                    pypi_0    pypi
    ld_impl_linux-64          2.44                 h153f514_2  
    libexpat                  2.7.3                h7354ed3_4  
    libffi                    3.4.4                h6a678d5_1  
    libgcc                    15.2.0               h69a1729_7  
    libgcc-ng                 15.2.0               h166f726_7  
    libgomp                   15.2.0               h4751f2c_7  
    libnsl                    2.0.0                h5eee18b_0  
    libstdcxx                 15.2.0               h39759b7_7  
    libstdcxx-ng              15.2.0               hc03a8fd_7  
    libuuid                   1.41.5               h5eee18b_0  
    libxcb                    1.17.0               h9b100fa_0  
    libzlib                   1.3.1                hb25bd0a_0  
    lxml                      6.0.2                    pypi_0    pypi
    ncurses                   6.5                  h7934f7d_0  
    openssl                   3.0.18               hd6dcaed_0  
    pip                       25.3               pyhc872135_0  
    pthread-stubs             0.3                  h0ce48e5_1  
    pyqt5                     5.15.11                  pypi_0    pypi
    pyqt5-qt5                 5.15.18                  pypi_0    pypi
    pyqt5-sip                 12.17.2                  pypi_0    pypi
    python                    3.10.19              h6fa692b_0  
    readline                  8.3                  hc2a1206_0  
    setuptools                80.9.0          py310h06a4308_0  
    sqlite                    3.51.0               h2a70700_0  
    tk                        8.6.15               h54e0aa7_0  
    tzdata                    2025b                h04d1e81_0  
    wheel                     0.45.1          py310h06a4308_0  
    xorg-libx11               1.8.12               h9b100fa_1  
    xorg-libxau               1.0.12               h9b100fa_0  
    xorg-libxdmcp             1.1.5                h9b100fa_0  
    xorg-xorgproto            2024.1               h5eee18b_1  
    xz                        5.6.4                h5eee18b_1  
    zlib                      1.3.1                hb25bd0a_0  

二、libGL 报错&解决方法

  1. 容器是精简版的 Linux,默认没有 libGL 图形驱动库,所以会提示找不到文件。

    bash 复制代码
    Traceback (most recent call last):
    
      File "/opt/miniconda3/envs/labelImg/lib/python3.10/site-packages/labelImg/labelImg.py", line 18, in <module>
    
        from PyQt5.QtGui import *
    
    ImportError: libGL.so.1: cannot open shared object file: No such file or directory
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
    
      File "/opt/miniconda3/envs/labelImg/bin/labelImg", line 3, in <module>
    
        from labelImg.labelImg import main
    
      File "/opt/miniconda3/envs/labelImg/lib/python3.10/site-packages/labelImg/labelImg.py", line 27, in <module>
    
        import sip
    
    ModuleNotFoundError: No module named 'sip'
  2. 执行如下指令解决上述 libGL 报错。

    bash 复制代码
    apt update && apt install -y libgl1-mesa-glx libglib2.0-0 libx11-xcb1
  3. 执行如下指令解决上述 python 依赖,其实在安装 labelimg 的时候已经安装过了。

    bash 复制代码
    # 1. 先安装 pyqt5 相关的 sip
    pip install PyQt5-sip
    
    # 2. 重新安装 pyqt5 (确保版本完整)
    pip install PyQt5
    
    # 3. 如果依然报错,尝试安装特定版本的 lxml
    pip install lxml
  4. 需要注意,容器内指定的显示器编号需要和宿主机一致,并且需要具有权限可视化,应最先确认如下信息。

    bash 复制代码
    echo $DISPLAY  # 获取宿主机显示器编号
    echo "export DISPLAY=:1" >> ~/.bashrc  # 在容器内指定相同编号,以 1 为例   

三、xcb 插件报错&解决方法

  1. 报错 xcb 插件加载失败,是因为 PyQt5 运行所需的底层 XCB 相关库在容器内还不完整。

    bash 复制代码
    qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
    
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    
    Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
    
    Aborted (core dumped)
  2. 执行如下指令,补齐 Qt5 缺失的所有 xcb 依赖。

    bash 复制代码
    apt update && apt install -y \
        libxcb-xinerama0 \
        libxcb-icccm4 \
        libxcb-image0 \
        libxcb-keysyms1 \
        libxcb-render-util0 \
        libxcb-xfixes0 \
        libxcb-shape0 \
        libxcb-randr0 \
        libxkbcommon-x11-0 \
        libdbus-1-3

小结

以上内容作为错误记录,仅供参考,不保证完全有效。如有其他问题欢迎在评论区讨论!!

相关推荐
梦梦代码精2 小时前
2026年PHP开源商城系统实测对比:架构、多商户、商用授权,谁才是真·省心?
vue.js·docker·架构·开源·代码规范
极客先躯6 小时前
高级java每日一道面试题-2026年02月02日-实战篇[Docker]-如何实现容器的持久化存储?
docker·容器·面试宝典·持久化·存储·韵味·java高级面试题
My is 李豆7 小时前
CentOS 7 安装 Docker 完整教程(含 docker-compose 插件)
docker·eureka·centos
极客先躯7 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
kong@react8 小时前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
某林2129 小时前
Isaac Sim 5.1.0 无头服务器部署与 RTX 显存段错误排障全记录
运维·服务器·docker·容器·isaac
m0_738120729 小时前
Docker 环境下 Vulfocus 靶场搭建全流程(附镜像源问题解决方案)
运维·服务器·网络·安全·docker·容器
simeple10 小时前
记一次 Docker Compose 项目迁移:从 Windows Docker Desktop 迁移到 CentOS 服务器
docker
哆啦A梦——10 小时前
Ubuntu 虚拟机 Docker 与 MySQL 8.0.42 部署指南
mysql·ubuntu·docker
木雷坞11 小时前
Playwright MCP Docker 部署:mcr 镜像、浏览器工具和权限配置
运维·docker·容器·mcp