QGIS Windows 中 ImportError:导入 _C 时 DLL 加载失败怎么解决
ImportError: DLL load failed while importing _C in QGIS on Windows
从 aka.ms/vs/17/release/vc_redist.x64.exe 安装 Microsoft Visual C++ Redistributable (x64),然后重启 Windows。PyTorch 自带编译后的 DLL,这些 DLL 需要 Microsoft C runtime。如果缺少该运行库或版本过旧,Windows 会拒绝加载它们。
Traceback (most recent call last):
File "C:\...\site-packages\torch\__init__.py", line 141, in <module>
raise err
OSError: [WinError 126] The specified module could not be found.
Error loading "C:\...\site-packages\torch\lib\fbgemm.dll" or one of its dependencies.
ImportError: DLL load failed while importing _C: The specified module could not be found.
适用于 Windows 10 和 11、QGIS 3.22 及更高版本,以及安装到 QGIS Python 或 plugin 环境中的任何 PyTorch 2.x。
为什么会发生
四种原因会打印出同一行错误。以下顺序是它们实际成为根因的常见程度:
- Visual C++ Redistributable (x64) 缺失或版本过旧。
fbgemm.dll和其他 torch DLL 都链接到它。 - 你的电脑上存在第二个 Python(Anaconda、Miniconda 或独立安装版),它自己的 torch DLL 会被 Windows 优先找到。Python 3.8 起,扩展 DLL 通过
os.add_dll_directory()加载,而不是通过 PATH 加载。混合配置会注册错误的文件夹。 - 已安装的 wheel 与电脑不匹配。在没有对应 NVIDIA 驱动的电脑上安装 CUDA 构建版本,也会导致相同的错误。
- 安装完成后,杀毒软件或企业应用控制策略隔离了某个
.pyd或.dll文件。
要区分这些原因,请在 Command Prompt 中运行 where python。如果有多个结果,通常指向原因 2。如果只有一个结果,并且安装 Redistributable 后重启仍然报错,则更可能是原因 3 或 4。
解决方法
安装 Visual C++ Redistributable (x64)
从 Microsoft 下载 vc_redist.x64.exe 并运行。即使电脑上也安装了 x86 版本,仍然要选择 x64 构建版本。
重启 Windows
必须重启电脑,不能只重启 QGIS。DLL 搜索列表会在每个进程启动时读取一次,而安装程序通常会把部分工作留到重启时完成。
单独测试导入
从开始菜单的 QGIS 文件夹中打开 OSGeo4W Shell,然后运行 python -c "import torch"。如果命令提示符正常返回,说明导入成功。在 QGIS 中执行相同测试的路径是 Plugins,然后 Python Console,然后运行 import torch。
从 PATH 中移除第二个 Python
如果 where python 返回了多个路径,请打开开始菜单,输入“环境变量”,打开“编辑系统环境变量”,然后依次进入“环境变量”和“Path”。移除属于你不在 QGIS 中使用的 Python 的条目。退出 Windows 账户后重新登录。
重新安装与电脑匹配的 wheel
如果电脑没有 NVIDIA GPU,请强制安装 CPU 构建版本:pip install --force-reinstall torch --index-url https://download.pytorch.org/whl/cpu。如果电脑有 GPU,请使用 PyTorch 安装页面针对你的 CUDA 版本提供的命令。
如果仍然无法解决
- 有些电脑已经安装了 Redistributable,但仍然缺少依赖
libomp140.x86_64.dll。它随 Visual Studio Community 一起安装,后者可以免费安装。不要从下载网站单独下载 DLL。 - 打开 Windows Security,然后进入 Virus and threat protection,再进入 Protection history。恢复从
site-packages文件夹中移除的文件,并在重新安装前将该文件夹加入排除项。 - 在 conda 环境中,请使用 conda 而不是 pip 安装 torch,这样运行库和软件包会来自同一个位置。

