Open3D:解决“DLL load failed while importing pybind”问题

这几天在安装open3d库的时候一直报出“DLL load failed while importing pybind:动态链接库(DLL)初始化例程失败”的错误。扒了很多经验贴,仍然一筹莫展,非常令人头秃。

前人经验总结:

前人栽树,后人乘凉。先总结一下大佬们遇到这种情况时常用的解决方案:

  1. 使用Dependencies工具对.pyd进行检查,修复依赖关系(例如没有识别到python39.dll,可能是没有添加python解释器的环境变量,如果使用的是Anaconda,那么在环境变量中添加如下路径);

下载地址:Dependencies_x64_Release.zip

 

  1. 使用DirectX修复工具对C++库进行修复,修复后重启电脑,重新安装open3d;

下载地址:DirectX修复工具增强版 by VBcom

  1. 使用CPU-Z检查CPU指令集是否包含AVX,如果CPU年事过高,可能将无法支持open3d库;

下载地址:CPU-Z官网下载地址

方案1、2我都尝试过,并没有作用;

看到有人说CUDA版本不匹配也会导致这个问题,但是我重装了CUDA,显然也不是这个原因;

对于方案3,我起初认为我的i5-12490F还是年轻小伙,不至于因为缺指令集导致不支持open3d的问题,所以一直没去检查。

BUT!!!

折腾了两天,已经想着重装系统最后一搏了。保守起见,我准备先在虚拟机上试一下,然后发现虚拟机上也是这个问题。这时候我才想到有大佬发帖说过CPU的指令集问题。

于是,我拿出我之前用的老电脑(此前配置环境一直正常),用CPU-Z比较了两台机子CPU的指令集。果不其然,i5-12490F(右)缺少了AVX指令集,但是岁数更高的i7-9750H却在显摆着“嘿嘿,我有!”。

最后百度了一番,发现是自己才疏学浅了。据说AVX打开后会产生巨大的发热量,所以现在很多主板默认将其关闭。但是我们可以进入bios进行更改,修改方法详见如下链接:

关闭或开启CPU的AVX指令集的方法

至此,问题的关键就是AVX指令集的缺失,打开AVX后,open3d可以被正常加载了。

如有类似问题,可做参考。但具体问题需要具体分析。

祝各位早日解决问题,步入正轨!

参考:

  1. python dll load failed_Windows下Python中常见的几种DLL load failed问题的原因以及解决方案...

  1. 解决ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败(踩坑全过程)

  1. ImportError: DLL load failed while importing pybind#5328

  1. ImportError: DLL load failed while importing pybind: A dynamic link library (DLL) initialization routine failed.#4468

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值