windows server 2008部署python应用cv2 dll load failed错误终极解决办法

     近日将开发完成的python应用准备部署到Winidows Server 2008 R2 企业版中进行部署测试的过程发现了一个问题,在运行python应程序时出现from .cv2 import * ImportError:DLL load failded:找不到指定的模块。错误如下图所示:

windows server 2008部署python应用cv2 dll load failed错误终极解决办法_第1张图片

    看错误提示是由于某些dll文件加载失败导致的问题,在网上搜了一下,很多说是因为依赖的dll文件没有找到导致问题。文章大多让下载一个查找dll依赖工具,用工具选择\Python\Python36\Lib\site-packages\cv2下的pyd文件进行分析,把缺失的dll文件注册一下就好了。我也尝试了去查找缺失的dll文件,发现根本没有办法解决。缺失的dll还要间接依赖其他dll文件这样找下去太费时费力。通过分析和排查最终发现是因为windows server 2008 R2的一个 功能未添加导致的问题。下面我把整个处理过程描述分享一下。

   为了解决问题我在vm里安装了一个windows server 2008进行了测试,主要是为了在没有安装任何软件的情况下去准确的定位问题。

  首先为操作系统升级了SP1的补丁(必须升级补丁否则Microsoft Visual C++ 2015-2019 Redistributable无法安装),将IE升级到IE11(因为cv2依赖相关dll文件)。安装python(我用的是3.6.8的版本)并配置环境变量。测试python是否已经正常运行。升级pip版本、升级numpy版本、升级opencv_python根据自己的python版本进行升级。如果服务器无法访问网则需要提前准备好离线安装包。

  其次安装Microsoft Visual C++ 2015-2019 Redistributable,如果操作系统是64位的建议32位的和64位的vc_redist都进行安装,重启服务器。

 此时如果运行应用程序仍然会提示cv2 import * ImportError:DLL load failded。不要慌不要急。这时要看看操作系统里有个功能桌面体验是否安装了?

该功能位于开始菜单,管理工具的服务器管理器中,打开后选择功能。点击添加功能,把滚动条拉到最下方在倒数第二个桌面体验,看看你有没有勾选?如果没有就勾选上吧,待安装成功后重启服务器。

windows server 2008部署python应用cv2 dll load failed错误终极解决办法_第2张图片

服务器重启完成后,在运行你的python应用一切正常了。这时的你一定该笑起来了。

虽然看上去操作及其简单,但在问题的排查和分析过程中着实费了一番功能。最终能解决问题也是很开心的,希望遇到此问题的你通过这篇文章能顺利的解决问题。

你可能感兴趣的:(Python,cv2,load,dll,failed)