根本原因是缺少 Microsoft Visual C++ Redistributable 运行库(如 vcruntime140.dll),需下载安装对应架构的 vc_redist.x64.exe(64位Python)或 vc_redist.x86.exe(32位),并重启命令行或IDE;同时须确认 Python 与 opencv-python 架构一致(均为64位),Windows Server 或精简版还需补装匹配版本的 Media Feature Pack。

确认是否装了 Microsoft Visual C++ Redistributable
绝大多数 ImportError: DLL load failed while importing cv2 错误,根源是缺 vcruntime140.dll、msvcp140.dll 这类运行库。Python 官方发行版不自带它们,而 OpenCV 的 cv2.pyd 必须依赖这些 DLL 才能加载。
别猜,直接去微软官网下最新版:VC++ 可再发行组件包(2015–2022)。只装一个就行:
- 如果你用的是 64 位 Python(几乎所有人都是),下载并安装
vc_redist.x64.exe - 极少数用 32 位 Python 的人,才需要
vc_redist.x86.exe - 装完必须重启命令行或 IDE,否则 PATH 不会刷新
检查 Python 架构和 OpenCV 包是否匹配
报错时容易忽略这点:Python 是 64 位,但 pip 安装的 opencv-python 却是 32 位(或反过来)。这种错位会让系统根本找不到对应的 .pyd 文件,更别说它依赖的 DLL 了。
验证方式很简单:
立即学习“Python免费学习笔记(深入)”;
- 运行
import platform; print(platform.architecture()),输出应为('64bit', 'WindowsPE') - 查看已安装的 OpenCV 包名:运行
pip show opencv-python,留意Filename字段里有没有win_amd64(64 位)或win32(32 位) - 不匹配就卸载重装:
pip uninstall opencv-python -y && pip install opencv-python
Windows Server 或精简版系统要补 Media Feature Pack
在 Windows Server 2012/2016/2019、或者某些企业定制版 Windows 上,即使装了 VC++ 运行库,依然可能报错——因为 OpenCV 内部调用的媒体解码相关 DLL(比如 mfplat.dll、mfreadwrite.dll)被系统移除了。
这不是 OpenCV 的锅,是系统本身没开媒体功能:
- 先查系统版本:按
Win+R输入winver,记下完整版本号(如Windows Server 2012 R2) - 去微软官方页搜 “Media Feature Pack”,下载**完全对应版本号**的安装包(例如
Windows Server 2012 R2 Media Feature Pack) - 安装后必须重启,否则新注册的 COM 组件和服务不会生效
别手动复制 DLL 或改名 cv2.pyd
网上有些“把 cv2.pyd 改名后丢进 Lib 目录”“从别的电脑拷 DLL 放进 system32”的做法,短期可能有效,但隐患极大:
- 手动放 DLL 容易版本错乱,导致其他程序崩溃
-
cv2.pyd名字是绑定 Python 版本和 ABI 的(比如cv2.cp311-win_amd64.pyd),硬改名会导致导入失败或段错误 - PyPI 上的
opencv-python是预编译好所有依赖的 wheel,强行拆解反而破坏完整性
真正该做的,是用 Dependencies_x64_Release(GitHub 可搜)打开你本地的 cv2.pyd,看清楚哪几个 DLL 标红——再针对性补依赖,而不是靠试错式搬运。


















