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

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

Open3D:解决“DLL load failed while importing pybind”问题_第1张图片

前人经验总结:

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

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

下载地址:Dependencies_x64_Release.zip

 

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

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

Open3D:解决“DLL load failed while importing pybind”问题_第2张图片

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

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

Open3D:解决“DLL load failed while importing pybind”问题_第3张图片

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

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

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

BUT!!!

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

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

Open3D:解决“DLL load failed while importing pybind”问题_第4张图片

最后百度了一番,发现是自己才疏学浅了。据说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

你可能感兴趣的:(windows,python)