即使安装了路径变量集,Tensorflow 也找不到“cudart64_90.dll”

Posted

技术标签:

【中文标题】即使安装了路径变量集,Tensorflow 也找不到“cudart64_90.dll”【英文标题】:Tensorflow can't find "cudart64_90.dll" even though it is installed with Path variable set 【发布时间】:2018-12-09 06:02:53 【问题描述】:

我安装了 CUDA 9.0,因为没有它,Tensorflow 会报错:

ImportError:找不到“cudart64_90.dll”。 TensorFlow 要求将此 DLL 安装在以 %PATH% 环境变量命名的目录中。

我将路径变量设置为 CUDA 9.0 安装的 bin 目录,其中存在所需的 DLL 文件。我也尝试将其设置为其父目录。但它仍然给我同样的错误。


【问题讨论】:

那个文件存在吗? 绝对是的。我仔细检查了。 似乎在同一系统上安装了两个版本的 CUDA,并且可能存在版本/名称冲突,这可能会混淆内部使用的 loadlibrary 调用。您可以删除其他路径并重试吗? IDK... 在导入 tensorflow 之前尝试在脚本中添加路径。 os.environ["PATH"].append("path/to/CUDA/v9/bin") @Gautam 我从 PATH 中删除了 v9.2,但它没有用。这应该没关系,因为根据这篇文章,同一系统上可以存在多个 CUDA 版本:devtalk.nvidia.com/default/topic/493290/… 【参考方案1】:

我找到了解决方案。这是一个很好的老建议 - “你试过把它关掉再打开吗?”

我重启了电脑,Tensorflow 找到了cudart64_90.dll,但是现在找不到cudnn64_7.dll。我正在提供解决我遇到的问题的步骤。


如果您安装了 Tensorflow GPU 版本,您很可能会遇到帖子中提到的问题。特别是如果您之前没有安装过 NVDIA 开发工具包。请按以下步骤操作:

1。安装 CUDA

从here 获取。 安装 Tensorflow 的 ImportError 中提到的版本。

ImportError:找不到“cudart64_90.dll”。 TensorFlow 要求将此 DLL 安装在以 %PATH% 环境变量命名的目录中。从以下 URL 下载并安装 CUDA 9.0:https://developer.nvidia.com/cuda-toolkit

它明确地告诉你版本号。最初,我安装了 CUDA 9.1 而不是 9.0,但它不起作用。 Windows 上的安装非常简单。运行 .exe,如果您已经安装了 NVIDIA Geforce 和其他软件包,请取消选中它们。

2。在 PATH 变量中包含 CUDA 路径

将它指向 tensorflow 安装的 bin 目录。 如果您不知道如何设置 PATH 变量,请检查 here。现在尝试导入 Tensorflow,如果仍然无法正常工作,请尝试重新启动系统。

现在你可能会遇到错误:

ImportError:找不到“cudnn64_7.dll”。 TensorFlow 要求将此 DLL 安装在以 %PATH% 环境变量命名的目录中。请注意,安装 cuDNN 与安装 CUDA 是一个单独的步骤,并且此 DLL 通常位于与 CUDA DLL 不同的目录中。您可以通过从以下 URL 下载 cuDNN 7 来安装必要的 DLL:https://developer.nvidia.com/cudnn

3。安装 cuDNN

再次,只安装错误中提到的版本。要获取安装程序,您需要有一个 NVIDIA 开发者帐户。如果您没有,请注册,它会将您定向到下载 cuDNN 的链接。选择与您的 CUDA 版本兼容的版本(在包名称中)。下载 zip 存档。将其提取到磁盘上的某个位置。

4。在 PATH 变量中包含 cuDNN 路径

类似于第二步。这一次,将其指向您提取的 cuDNN 存档中的 bin 目录。现在导入 TensorFlow。如果需要,重新启动系统。

它现在应该可以工作了。

【讨论】:

如果CUDA/CuDNN和PATH安装正常,只需要重启shell或者IDE,不需要重启电脑。 对于第 1 部分):如果您收到安装 CUDA 的建议并且其版本是 10.1、10.2 等,您将不会获得包含 cudart64_100.dll,而是会获得 cudart64_101.dll/cudart64_102 .dll 等。如果发生这种情况,请参阅此答案:***.com/a/58464975/5897324【参考方案2】:

当我到达第 3 步时,我复制并粘贴了存档中的文件 如here

Copy <installpath>\cuda\bin\cudnn64_7.dll to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin.

Copy <installpath>\cuda\ include\cudnn.h to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include.

Copy <installpath>\cuda\lib\x64\cudnn.lib to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64.

【讨论】:

【参考方案3】:

我也有几个小时遇到同样的问题。刚刚重启了我的电脑,解决了你遇到的问题,试试看吧。

【讨论】:

【参考方案4】:

始终检查 cuda 版本,在这种情况下,您必须安装 cuda 版本 9.0,这将在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin 文件夹中创建 cudart64_90.dll 文件。

这肯定会奏效。

【讨论】:

以上是关于即使安装了路径变量集,Tensorflow 也找不到“cudart64_90.dll”的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow 的数据集 API 返回的大小不是恒定的

即使明确提供了模块路径,Eclipse 也找不到模块

在 Mac 上安装 Laravel 会抛出 laravel,即使在设置 PATH 后也找不到

为啥即使安装了 FBX 模块也找不到?

即使安装了@types/node,Typescript 也找不到模块“fs”

即使安装了 gem,Ruby 也找不到所需的库