Tensorflow 无法识别 cudart64_101.dll

Ome*_*bin 4 python windows python-3.x tensorflow

我在路径中有一个 DLL 文件:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\cudart64_101.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
Run Code Online (Sandbox Code Playgroud)

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

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

奇怪的是,如果我手动包含它,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
Run Code Online (Sandbox Code Playgroud)

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

Mir*_*ili 11

就我而言,问题出在从Windows 商店安装的 python

请参阅@smreichlingtensorflow 的 GitHub(问题 36111)的评论:

问题原来是我安装的python版本是来自Microsoft Store的版本,而不是来自python.org的版本。事实证明,从 Microsoft Store 安装的应用程序是沙盒化的。Windows 非常严格地限制了它们可以从何处加载 DLL。其中的限制是:Windows 不会在PATHenv var 中的目录中搜索DLL。所以应用商店 python 永远无法通过这种方式找到 CUDA DLL。

所以我安装了可以从https://www.python.org下载的那个。