Tensorflow无法识别cudart64_101.dll

时间:2020-03-11 13:07:44

标签: python python-3.x windows tensorflow

我在路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\cudart64_101.dll中有一个DLL文件,但是TensorFlow似乎无法识别它:

2020-03-11 14:39:19.815880: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found

我确保PATH变量包含DLL的路径:

>>> l = os.environ['PATH'].split(';')
>>> for s in l:
...     print(s)
...
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin

奇怪的是,如果我在ctypes中手动添加它,则会成功加载:

>>> import ctypes
>>> hllDll = ctypes.WinDLL("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.1\\bin\\cudart64_101.dll")
>>> import tensorflow as tf
2020-03-11 15:05:26.907300: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll

那是为什么?我该如何解决?

1 个答案:

答案 0 :(得分:5)

在我的情况下,问题出在 Windows应用商店 安装了python!

请参阅@smreichlingtensorflow's GitHub (issue 36111)的评论:

原来的问题是我安装的python版本是Microsoft Store的版本,而不是是python.org的版本。事实证明,从Microsoft Store安装的应用程序都经过沙箱处理。 Windows严格限制了它们可以从哪些位置加载DLL。在restrictions中:Windows不会在PATH env var中的目录中搜索DLL。因此,应用商店python将永远无法以这种方式找到CUDA DLL。

因此,我安装了可从https://www.python.org下载的版本。