Я явно не первый, у кого возникла проблема с чтением DLL-файла с python.Такой пример можно найти там WindowsError: [Ошибка 126] при загрузке ОС с ctypes , WindowsError: [Ошибка 126] Указанный модуль не найден или https://github.com/apache/incubator-mxnet/issues/6313. Зная масштаб проблем, я проверил, что путь к моей dll правильный.Я даже сделал небольшой скрипт на python, чтобы минимально протестировать его, добавив столько, сколько мне нужно, путей:
import sys
import os
from ctypes import *
if __name__ == '__main__':
print(sys.path)
sys.path.append(r"C:\Program Files (x86)\OpenBLAS\bin")
pathWin = os.environ["PATH"]
pathWin = pathWin.split(";")
sys.path = sys.path + pathWin
print(sys.path)
dllToLoad = "F:/installMxnet/mxnet/build/Debug/libmxnet.dll"
cdll.libmxnet = cdll.LoadLibrary(dllToLoad)
Я все еще получаю эту ошибку:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.1.1\helpers\pydev\pydevd.py", line 1664, in <module>
main()
File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.1.1\helpers\pydev\pydevd.py", line 1658, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.1.1\helpers\pydev\pydevd.py", line 1068, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.1.1\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "main.py", line 16, in <module>
cdll.libmxnet = cdll.LoadLibrary(dllToLoad)
File "C:\Users\educrocq\AppData\Local\Programs\Python\Python36\lib\ctypes\__init__.py", line 426, in LoadLibrary
return self._dlltype(name)
File "C:\Users\educrocq\AppData\Local\Programs\Python\Python36\lib\ctypes\__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found
Согласнок тому, что я прочитал, это может быть потому, что DLL имеет зависимость, которая не может быть найдена.(И я предполагаю, что зависимость, которая не найдет свою зависимость, вызовет ту же проблему, и так далее ...).Кажется, что проблема исходит от Windows, которая не является многословной в своем выходном сообщении.
Но мне нужно знать, какую dll нельзя найти в моей ситуации, потому что эта dll зависит от многих из них ...Есть ли способ узнать, какой из них отсутствует?