OSError: [WinError 126] module could not be found

OSError: [WinError 126] module could not be found

我正在尝试 运行 MXNet port of SSD 在 python 中,但是当我 运行 演示说

时我遇到了一个奇怪的错误
OSError: [WinError 126] The specified module could not be found

特别是在尝试打开时 libmxnet.dll 所以我在尝试调试它时发现了。

整个报错信息是这样的:

>>>> kernel32
>>>>  C:\Users\wisdom\Anaconda3\envs\gpu-test\lib\site-packages\mxnet\libmxnet.dll
Traceback (most recent call last):
  File "demo.py", line 2, in <module>
    import tools.find_mxnet
  File "C:\Users\wisdom\Desktop\mxnet-ssd-master\tools\find_mxnet.py", line 6, in <module>
    import mxnet as mx
  File "C:\Users\wisdom\Anaconda3\envs\gpu-test\lib\site-packages\mxnet\__init__.py", line 24, in <module>
    from .context import Context, current_context, cpu, gpu, cpu_pinned
  File "C:\Users\wisdom\Anaconda3\envs\gpu-test\lib\site-packages\mxnet\context.py", line 24, in <module>
    from .base import classproperty, with_metaclass, _MXClassPropertyMetaClass
  File "C:\Users\wisdom\Anaconda3\envs\gpu-test\lib\site-packages\mxnet\base.py", line 213, in <module>
    _LIB = _load_lib()
  File "C:\Users\wisdom\Anaconda3\envs\gpu-test\lib\site-packages\mxnet\base.py", line 204, in _load_lib
    lib = ctypes.CDLL(lib_path[0], ctypes.RTLD_LOCAL)
  File "C:\Users\wisdom\Anaconda3\envs\gpu-test\lib\ctypes\__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found

前两行带有 >>>> 符号的行指示我尝试调试和检查的行 where/when 错误在 ...\ctypes\__init__.py 文件中触发,如下所示

if handle is None:
    x = (self._name)
    print('>>>>',x)
    self._handle = _dlopen(self._name, mode)

我当然检查了请求文件 libmxnet.dll 的存在,它就在那里,但是无论何时调用它都会抛出这个错误!

好的,终于解决了!

我知道当不满足或找不到文件依赖项时可能会抛出此类错误。因此,要检查依赖项,您首先进入 Visual Studio 提示符,然后导航到 libmxnet.dll 存在的文件夹和 运行 以下命令

dumpbin /dependents libmxnet.dll

它会显示所需文件的列表。

在我的案例中缺少的是一些 nVidia GPU Computing Toolkit 文件 Cuda 9.0,因为 libmxnet.dll 要求它们,而我使用的是工具包版本 10.0!

您应该安装 vcredist_x64 或 vcredist_x86 软件包代表 Visual C++ Redistributable。