PySide6 6.10+ 缺少 icuuc.dll 导致程序无法启动

Author: 60MonkeyCreated Jul 26, 2026Updated Jul 26, 2026

Description

requirements.txt 中指定 pyside6~=6.11,安装 PySide6 6.11.1(及 6.10.x)后运行 python gui.py 报错:

ImportError: DLL load failed while importing QtCore: 找不到指定的程序

Root Cause

PySide6 6.10+ 的 Qt6Core.dll 新增了对 icuuc.dll(ICU Unicode 库)的硬依赖(非 delay-load),但 wheel 包中未打包该 DLL

验证过程:

  1. pefile 解析 Qt6Core.dll 导入表,发现依赖 icuuc.dll
  2. PySide6 安装目录中不存在任何 icu*.dll(仅有 resources/icudtl.dat 数据文件)
  3. 对比 PySide6 6.9.3 的 Qt6Core.dll,其导入表中无 ICU 依赖,可正常加载
  4. 系统上 Anaconda 的 ICU 73 导出带版本后缀符号(ucnv_open_73),而 Qt 6.10+ 期望无后缀符号(ucnv_open),因此即使 PATH 中有 ICU 也无法解决

Affected Versions

PySide6 版本 Qt6Core.dll 依赖 ICU 是否打包 ICU 状态
<= 6.9.3 N/A 正常
6.10.0 ~ 6.11.1 是 (icuuc.dll) 无法启动

Suggested Fix

requirements.txt 中的 PySide6 版本约束改为:

pyside6~=6.9.3

或等待 PySide6 上游修复 Windows wheel 中缺失 ICU DLL 的打包问题。

Environment

  • OS: Windows 11 (10.0.26200)
  • Python: 3.12.7
  • PySide6: 6.11.1 (pip install)
  • GPU: NVIDIA (CUDA)

Source: YaoFANGUK/video-subtitle-extractor