在VS Code终端运行labelme时遭遇onnxruntime导入错误与NumPy版本兼容问题
嘿,我完全懂这种依赖版本冲突的头疼——跟着教程一步步走,结果卡在工具启动这一步,太闹心了!结合你给出的错误日志,核心问题其实是Python 3.12 + NumPy 2.x的组合和labelme依赖的osam、onnxruntime等库不兼容,毕竟NumPy 2.x是大版本更新,很多旧库还没完成适配,加上Python 3.12对部分旧DLL的支持也有调整。给你几个一步步解决的方案,从简单到彻底:
快速临时修复:降级NumPy到1.x版本
错误日志里明确提示了“用NumPy 1.x编译的模块无法在NumPy 2.1.3中运行”,所以先把NumPy降级到兼容版本:
pip install numpy<2 --force-reinstall
--force-reinstall是为了确保完全替换掉当前的NumPy 2.x版本,避免残留文件导致的兼容问题。
修复onnxruntime的DLL与导入问题
你之前尝试的onnxruntime-directml版本可能和当前环境不匹配,不如直接安装和Python 3.12兼容的onnxruntime稳定版:
pip install onnxruntime==1.17.3 --force-reinstall
1.17.3是目前对Python 3.12支持比较好的稳定版,装完之后再试启动labelme:
labelme
彻底解决:用虚拟环境隔离依赖(推荐)
全局Python环境的依赖冲突是家常便饭,尤其是装了很多不同项目的包之后。用虚拟环境给labelme单独建一个干净的环境,从根源避免冲突:
- 先安装虚拟环境工具:
pip install virtualenv
- 在你的项目文件夹下创建虚拟环境:
virtualenv labelme-workspace
- 激活虚拟环境(Windows PowerShell环境下):
.\labelme-workspace\Scripts\Activate.ps1
激活后命令行前面会出现(labelme-workspace)的标识,说明已经进入隔离环境了。
4. 在干净的虚拟环境里重新安装所有依赖:
pip install labelme opencv-python tensorflow matplotlib albumentations
这时候pip会自动安装和当前虚拟环境兼容的依赖版本,不会和全局环境的包冲突。
5. 启动labelme:
labelme
最后补个小提醒
如果还是遇到DLL初始化失败的问题,检查一下你的Windows系统有没有安装VC++ Redistributable for Visual Studio 2019/2022(x64版本)——很多Python的C扩展模块都依赖这个运行时库。
内容来源于stack exchange

