我试图在python中运行MXNet port of SSD但是当我运行演示时我遇到了一个奇怪的错误
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
其中前两行带有>>>>符号表示我试图调试的行,并检查在...\ctypes\__init__.py
文件中触发错误的位置/时间,如下所示
if handle is None:
x = (self._name)
print('>>>>',x)
self._handle = _dlopen(self._name, mode)
我当然检查了所请求的文件libmxnet.dll
的存在,它就在那里,但无论何时调用它都会抛出此错误!
好的终于解决了!
我知道当不满足或找不到文件依赖性时,可能会抛出此类错误。因此,要检查依赖项,首先转到Visual Studio Prompt,然后导航到libmxnet.dll
所在的文件夹并运行以下命令
dumpbin /dependents libmxnet.dll
它会显示所需文件的列表。
在我的情况下缺少的是一些nVidia GPU Computing Toolkit
文件Cuda 9.0
,因为libmxnet.dll
要求他们,而我正在使用工具包版本10.0!