Импортировать Darknet FileNotFoundError: не удалось найти модуль

Я получаю эту ошибку при запуске 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.```

person Seeyaq    schedule 16.02.2021    source источник
comment
Не могли бы вы объяснить, как вы установили darknet? Вроде бы местный путь.   -  person astrochun    schedule 16.02.2021
comment
Я следую этому руководству youtu.be/sUxAVpzZ8hU, но с cuda 11 2 и opencv 4.5.1   -  person Seeyaq    schedule 16.02.2021
comment
Если я импортирую cv2 перед импортом даркнета, я не получаю эту ошибку. Единственная ошибка, которую я получаю, это имя "DARKNET_FORCE_CPU" не определено.   -  person Seeyaq    schedule 16.02.2021


Ответы (2)


Вместо того, чтобы просто загружать еще одну версию python (yawn), мы можем исправить darknet.py, чтобы правильно импортировать библиотеки DLL. Как упоминалось здесь, нам нужно добавить правильные пути импорта DLL при использовании python › 3.8. Решение состоит в том, чтобы добавить эти строки

os.add_dll_directory('c:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.1/bin')
os.add_dll_directory(os.path.dirname(__file__))

где-то до звонка CDLL. Вы можете разместить их в верхней части скрипта.

Первая строка позволяет python загружать библиотеки DLL из вашей установки CUDA, которые вам нужны, если вы используете графический процессор.

Вторая строка позволяет python загружать библиотеки DLL из текущего рабочего каталога (в который вы должны скопировать yolo_cpp_dll.dll и pthreadVC2.dll). В качестве альтернативы вы можете заменить это на путь, содержащий эти библиотеки DLL.

person travisjayday    schedule 27.06.2021

Это потому, что у Python 3.9 есть некоторые проблемы. Выдает ошибку при импорте файла yolo_cpp_dll.dll.

Вот как это исправить:

  1. Установите Python 3.7 или ниже (у меня работал 3.6). Вы можете установить версию 3.7 вместе с текущей версией или удалить текущую и установить только Python 3.7. Если он установлен вместе с текущей версией, вам придется переименовать только что установленный exe-файл python (3.7) во что-то вроде python3.7 в его установленном месте.
  2. После переименования добавьте этот каталог в переменную среды PATH в Windows.
  3. Перейдите в то место, где хранится даркнет (для меня это C:\Users\ARYA\Documents\Penelitian1\coba1_darknet\darknet-master\build\darknet\x64\), откройте командную строку и введите python3.7 (а не только python). Это откроет Python 3.7.
  4. Теперь вы можете запустить import darknet.
person Shubham Chaudhary    schedule 15.05.2021