PyCharm导入cv2报错:DLL加载失败,指定模块未找到
解决OpenCV 3.4.0 + Python 3.6.4导入cv2的DLL加载失败问题
你猜的完全没错——OpenCV自带的Python绑定只有Python 2.7版本的,这就是导致你import cv2时报错的核心原因。不同Python版本的C扩展模块(比如cv2.pyd)是针对特定版本编译的,没法跨版本混用,所以你复制的2.7版本pyd文件肯定没法在Python3.6里正常加载。
下面给你两种靠谱的解决方法,优先推荐第一种,简单高效:
方法一:用pip安装适配Python3.6的OpenCV 3.4.0绑定
这是最省心的方案,不用手动折腾文件复制或编译:
- 打开PyCharm的内置终端(或者系统命令行,确保使用的是PyCharm配置的Python3.6环境)
- 执行精准版本的安装命令:
这个版本号pip install opencv-python==3.4.0.123.4.0.12对应的正是OpenCV 3.4.0的官方PyPI包,完美支持Python3.6。 - 安装完成后,直接在代码里写
import cv2就行——pip会自动把所有依赖文件(包括需要的DLL和cv2.pyd)放到Python环境的正确位置,不用你手动复制。
方法二:手动编译OpenCV 3.4.0针对Python3.6的绑定
如果一定要用你本地的OpenCV源码,需要重新编译适配Python3.6的模块:
- 先准备编译工具:安装CMake(3.10及以上版本)、Visual Studio 2017(OpenCV3.4.0对这个版本支持最好,选x64版本)
- 打开CMake-GUI:
- 选择OpenCV的源码根目录(比如
opencv-3.4.0),再指定一个空的构建目录(比如opencv-build) - 点击「Configure」,选择对应的VS2017 x64编译器,等待配置完成
- 在CMake的配置列表里找到Python3相关选项,手动指定路径:
PYTHON3_EXECUTABLE:指向你的Python3.6的python.exe(比如D:\Python36\python.exe)PYTHON3_INCLUDE_DIR:指向Python3.6的include文件夹(比如D:\Python36\include)PYTHON3_LIBRARY:指向Python3.6的libs/python36.libPYTHON3_NUMPY_INCLUDE_DIRS:可以通过在终端执行pip show numpy找到numpy的安装路径,然后指向其include子目录
- 再次点击「Configure」,确保没有红色报错,然后点击「Generate」生成VS项目文件
- 选择OpenCV的源码根目录(比如
- 打开生成的
OpenCV.sln文件,在Visual Studio里切换到Release模式,右键点击「INSTALL」项目选择「生成」 - 编译完成后,在构建目录的
install/python/cv2/python-3.6文件夹里找到cv2.pyd,把它复制到Python3.6的site-packages文件夹中 - 最后,把OpenCV构建目录下
bin/Release里的所有DLL文件复制到Python3.6的DLLs文件夹,或者把这个bin/Release路径添加到系统环境变量PATH里,避免DLL缺失问题
额外提醒
如果你之前手动复制过Python2.7版本的cv2.pyd,记得先把这些文件从Python3.6的DLLs和site-packages文件夹里删掉,避免冲突。
内容的提问来源于stack exchange,提问作者prog
相关产品推荐
相关产品推荐

