当前位置:   article > 正文

darknet dll 问题_could not find module 'd:\darknet\yolo_cpp_dll.dll

could not find module 'd:\darknet\yolo_cpp_dll.dll' (or one of its dependenc

问题:

I am getting this error when I run import darknet:

  1. Traceback (most recent call last):
  2. File "<stdin>", line 1, in <module>
  3. File "C:\Users\darknet-master\build\darknet\x64\darknet.py", line 211, in <module>
  4. lib = CDLL(winGPUdll, RTLD_GLOBAL)
  5. File "C:\Users\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", line 374, in __init__
  6. self._handle = _dlopen(self._name, mode)
  7. 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 规则更改

由以上资料可知,可信的位置包括:

  • DLL 所在的路径(加载 DLL 时提供 DLL 的完整路径或部分路径,文件存在则该路径即可信)。
  • 使用 add_dll_directory() 添加的路径。
  • (系统可信位置)

因此,下面这种之前可行的写法在 Windows Python 3.8 下会导致异常:

  1. mb = ctypes.cdll.LoadLibrary("node.dll") # 指定了 DLL 名,Python 3.8 下抛出异常
  2. # `FileNotFoundError: Could not find module 'node.dll'`

该语句指定待加载的模块名是 node.dll,但由于当前工作目录不在可信位置里,故不会搜寻当前目录下的 DLL,最终导致无法在可信位置里找到名字匹配的模块,遂异常。

而下面的写法则不会异常:

mb = ctypes.cdll.LoadLibrary("./node.dll")   # 指定了 DLL 的路径 

因为 ./node.dll 实际上是给出了模块路径而不是模块名,当显式地给出模块路径时,模块存在则该路径属于可信位置,可以加载。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号