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。
验证过程:
- 用
pefile解析Qt6Core.dll导入表,发现依赖icuuc.dll - PySide6 安装目录中不存在任何
icu*.dll(仅有resources/icudtl.dat数据文件) - 对比 PySide6 6.9.3 的
Qt6Core.dll,其导入表中无 ICU 依赖,可正常加载 - 系统上 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