赞
踩
问题:
I am getting this error when I run import darknet
:
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "C:\Users\darknet-master\build\darknet\x64\darknet.py", line 211, in <module>
- lib = CDLL(winGPUdll, RTLD_GLOBAL)
- File "C:\Users\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", line 374, in __init__
- self._handle = _dlopen(self._name, mode)
- FileNotFoundError: Could not find module 'C:\Users\darknet-master\build\darknet\x64\yolo_cpp_dll.dll' (or one of its dependencies). Try using the full path with constructor syntax.```
解决方法:增加winmode=0
原因:python 3.8 规则更改
由以上资料可知,可信的位置包括:
add_dll_directory()
添加的路径。因此,下面这种之前可行的写法在 Windows Python 3.8 下会导致异常:
- mb = ctypes.cdll.LoadLibrary("node.dll") # 指定了 DLL 名,Python 3.8 下抛出异常
- # `FileNotFoundError: Could not find module 'node.dll'`
该语句指定待加载的模块名是 node.dll
,但由于当前工作目录不在可信位置里,故不会搜寻当前目录下的 DLL,最终导致无法在可信位置里找到名字匹配的模块,遂异常。
而下面的写法则不会异常:
mb = ctypes.cdll.LoadLibrary("./node.dll") # 指定了 DLL 的路径
因为 ./node.dll
实际上是给出了模块路径而不是模块名,当显式地给出模块路径时,模块存在则该路径属于可信位置,可以加载。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。