【解决方案】from .cv2 import * ImportError: DLL load failed: 找不到指定的模块。

一、背景:

我自己写了一个python脚本,要放到远程电脑上用,怎么办?

参考网上的做法,我应该按照python installer,打包发布;但是没有成功;后面再研究下,如果有进展我再更新。

退而求其次,我只能把我本地的开发环境搬到那台远程电脑上运行了。按照我的设想,应该是非常轻松愉快的,结果却不是这样,我遇到了import cv2报错的问题,在网上找了多种解决方案都无效,好在最后都解决了,下面将我的过程简要记录并分享出来,希望对大家有帮助,主要是提供一个解决问题的思路,别走错方向了。

二、部署步骤:

1、安装anconda

2、新建工作环境(关注python版本,最好跟自己的一样,以免出现其他问题)

3、增加清华的源

4、用pip来按照需要的库

三、出现的问题及解决过程:

pip install opencv-python之后,运行脚本,报错:

from .cv2 import *

ImportError: DLL load failed: 找不到指定的模块。

 

在网上搜了一些资料,都说不到点子上。无奈只好自己研究。

 

原因是win7系统缺少某些动态库文件,具体是缺少哪个动态库呢?

就要用到工具depends22_x86来分析了:

depends22_x86分析cv2.cp37-win32.pyd的依赖动态库,看系统缺哪些库。

cv2.cp37-win32.pyd路径:

C:\ProgramData\Anaconda3\Lib\site-packages\cv2\cv2.cp37-win32.pyd

 

分析结果如下,缺少下面的三个库,第一个最重要:

API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLL

PYTHON37.DLL

IESHIMS.DLL

 

那么到哪里去找合适的库(API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLL)?

1)刚开始搜到脚本之家上面的库,下载注册

 

到脚本之家下载库,并在系统中注册

https://www.jb51.net/dll/72355.html#downintro2

 

@echo 开始注册

copy api-ms-win-downlevel-shlwapi-l1-1-0.dll %windir%\system32\

regsvr32 %windir%\system32\api-ms-win-downlevel-shlwapi-l1-1-0.dll /s

@echo api-ms-win-downlevel-shlwapi-l1-1-0.dll注册成功

@pause

 

这样就把动态库安装好了,运行在python中import cv2出现下面的错误。

 

from .cv2 import *

ImportError: DL load failed: %1 不是有效的 Win32 应用程序。

原因是下载的动态库不适合当前的系统,只能再想其他办法了。

2)这次找到了https://www.dll-files.com/ 这个网站,上面可以搜到我们要的库

a。修复方法1,下载它提供的工具自动修复,但是需要钱

修复dll缺失的工具:

https://www.jb51.net/softjc/604843.html

b。修复方法2,对于不想花钱的我,只能手动下载并安装了。

https://www.dll-files.com/ 到这个网站下载缺失的dll

32 bit

 

总结:

cv2 import failed due to api-ms-win-downlevel-shlwapi-l1-1-0.dll missing

fix method:

1. get which dll is missing by tool depends22_x86

2. download the responding dll file file web https://www.dll-files.com/

3. regist the dll by dll.bat

你可能感兴趣的:(AI,opencv,cv2)