解决:抠图时onnxruntime错误-无法加载“onnxruntime_providers_tensorrt.dll“-错误代码“126”

作者在使用Stable-DiffusionWEBUI进行图片处理时遇到ONNXRuntimeError,错误涉及onnxruntime_providers_tensorrt.dll。分析可能与CUDA和cuDNN的版本不匹配有关,但未深入研究。为恢复功能,作者选择删除onnxruntime-gpu,仅保留onnxruntime,暂时放弃GPU加速,从而使抠图功能恢复正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)问题

在这篇:🔗《探索【Stable-Diffusion WEBUI】的附加功能:图片缩放&抠图》里面,我准备放一个抠图完成的例子时,发现我的笔记本报错了,于是就用台式机完成了抠图和举例。当时也记录了,报错内容如下:

RuntimeError: D:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1106 
onnxruntime::ProviderLibrary::Get [ONNXRuntimeError] : 1 : FAIL : 
LoadLibrary failed with error 126 "" 
when trying to load "D:\Download\AIDraw\py310\lib\site-packages\onnxruntime\capi\onnxruntime_providers_tensorrt.dll"

本来没想管它为啥错,把两边电脑内容同步一下就OK的。
然后同步反了方向……两台电脑都如上报同样的错了,都不能抠图了。

(二)假装分析

网上查没搞懂加载库失败到底是啥意思,因为库文件是在的,位置也没错。
于是去🔗onnxruntime.ai看看和Nvidia版本对应的情况,目前1.14对应的是:

cuda: 11.4 + cuDNN 8.5.0.96 (包括libcudnn 8.2.4)

我这里显示:

cuda: 11.8 + cuDNN: 8700

又去🔗Nvidia看了cuda小版本号兼容的情况。好复杂,还包括有驱动版本,理解不能……

(三)解决

在没有理解是不是版本冲突的情况下,考虑到WEBUI环境要求可能和插件不一致。
只好先删除onnxruntime-gpu,只保留onnxruntime
试了一下OK,那就先不用GPU加速吧,毕竟抠图功能正常更要紧。

似乎也不算解决,只能说是绕过了问题。

### 解决Python中导入ONNX Runtime遇到的DLL加载失败问题 当尝试在Python环境中导入`onnxruntime`库并遭遇`ImportError: DLL load failed`错误,此情况通常是由于缺少必要的动态链接库(DLL),或是存在版本冲突所引起的[^1]。 对于此类问题的一个有效解决方案是创建一个新的Conda环境,并安装特定版本组合下的软件包来确保兼容性。例如,在处理涉及`win32api`的问题发现,通过指定Python和相关依赖项的具体版本可以解决问题: ```bash conda create --name tf2 python=3.8 tensorflow tensorflow-gpu jupyter ``` 上述命令创建了一个新的虚拟环境`tf2`,其中包含了Python 3.8以及TensorFlow和其他组件。这种方法有助于避免不同项目之间的依赖关系相互干扰,同也减少了因全局环境下已有的其他版本而引发潜在冲突的可能性[^3]。 针对`onnxruntime`的情况,建议采取如下措施之一或多个结合的方式来进行排查与修复: - **更新pip**: 使用最新版的pip工具可以帮助解决一些由旧版本pip引起的问题。 ```bash pip install --upgrade pip ``` - **重新安装onnxruntime**: 卸载现有的`onnxruntime`后再进行一次全新的安装操作可能会清除掉某些残留文件带来的影响。 ```bash pip uninstall onnxruntime pip install onnxruntime ``` - **确认Visual C++ Redistributable是否已安装**: `onnxruntime`可能依赖于Microsoft Visual Studio编译器运行库的一部分;如果尚未安装,则可以从微软官方网站下载相应版本并完成安装过程。 - **检查系统路径变量设置**: 确认所有必需的DLL都能被操作系统找到。可以通过调整系统的PATH环境变量来实现这一点,使其包含这些DLL所在的目录位置。 - **使用Anaconda发行版**: Anaconda自带了许多科学计算所需的预构建二进制文件,能够减少手动配置的工作量。考虑切换到Anaconda作为主要开发平台也是一个不错的选择。 最后值得注意的是,有即使解决了当前的DLL缺失问题之后仍然会碰到类似的错误提示,这应该仔细阅读具体的错误信息,因为它们往往指向了下一个需要关注的地方。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值