PaddleOCR 启动报错解决方案:aiohttp 版本冲突修复
1. 问题描述在运行 Python 项目如 PySide6 结合 PaddleOCR时程序在导入阶段崩溃无法成功启动。具体表现为在执行main.py时由于依赖链中paddleocr尝试导入aiohttp导致抛出TypeError: unhashable type: list异常。2. 错误日志摘要以下是触发该问题的典型报错堆栈信息Traceback (most recent call last): File c:/Users/admin/Desktop/HedaProject/main.py, line 7, in module from algo.AlgorithmEngine import AlgorithmEngine # ... 省略中间导入链 ... File C:\Users\admin\miniconda3\envs\pyside6\lib\site-packages\aiohttp\client.py, line 199, in _RequestOptions middlewares: Optional[Sequence[ClientMiddlewareType]] File C:\Users\admin\miniconda3\envs\pyside6\lib\typing.py, line 421, in Union parameters _remove_dups_flatten(parameters) File C:\Users\admin\miniconda3\envs\pyside6\lib\typing.py, line 215, in _remove_dups_flatten all_params set(params) File C:\Users\admin\miniconda3\envs\pyside6\lib\typing.py, line 694, in __hash__ return hash((self.__origin__, self.__args__)) TypeError: unhashable type: list3. 根本原因分析3.1 核心问题该错误是由aiohttp库版本与当前 Python 环境中的typing模块发生冲突引起的。3.2 触发机制新版特性aiohttp 3.9版本在源码中使用了较为复杂的类型注解例如TypedDict和Optional[Sequence[...]]。底层解析失败当 Python 的typing模块处理这些嵌套泛型时若底层依赖包如multidict或yarl的版本不匹配会导致类型参数被错误地解析为list而非tuple。哈希报错在尝试对解析后的参数进行哈希计算hash()以去重时由于list是不可哈希类型最终抛出了TypeError: unhashable type: list。4. 详细解决步骤针对此已知 Bug最直接有效的方案是降级aiohttp至稳定兼容版本3.9.5。请在 PowerShell 或终端中依次执行以下命令步骤 1卸载当前冲突版本pip uninstall aiohttp-y步骤 2安装稳定兼容版使用国内镜像源加速下载并安装3.9.5版本pip install aiohttp3.9.5-i https://pypi.tuna.tsinghua.edu.cn/simple说明aiohttp 3.9.5修复了此类typing冲突问题且完全兼容PaddleOCR的异步客户端需求。5. 验证方法安装完成后可通过以下命令快速验证aiohttp是否能正常导入python-cimport aiohttp; print(aiohttp OK)若控制台输出aiohttp OK则说明修复成功。此时重新运行你的主程序如python main.py程序应能顺利导入PaddleOCR并正常启动。6. 总结步骤执行命令目的1pip uninstall aiohttp -y移除当前存在冲突的aiohttp版本2pip install aiohttp3.9.5 -i https://pypi.tuna.tsinghua.edu.cn/simple安装修复了 typing 冲突的稳定版本3python -c import aiohttp; print(aiohttp OK)验证依赖包导入是否正常4运行main.py验证整体程序能否成功启动