Tensorflow:ImportError:libcudnn.so.7:无法打开共享对象文件:没有这样的文件或目录

Posted

技术标签:

【中文标题】Tensorflow:ImportError:libcudnn.so.7:无法打开共享对象文件:没有这样的文件或目录【英文标题】:Tensorflow: ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory 【发布时间】:2018-12-03 19:05:04 【问题描述】:

我最近使用 pip 安装了 tensorflow-gpu。但是当我导入它时,它给出了以下错误:

ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory

我已经浏览了与此问题相关的所有 *** 答案,但没有一个对我有用。

libcudnn.so.7 存在于以下目录 /usr/local/cuda/lib64 和 /usr/local/cuda-9.0/lib64 中。

另外,我在 .bashrc 文件中添加了以下路径:

export PATH=/usr/local/cuda-9.0/bin$PATH:+:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\$LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH

export PATH=/usr/local/cuda/bin$PATH:+:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64\$LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH

请帮我解决这个问题

【问题讨论】:

@cdarke 是的,它存在于 /usr/local/cuda/lib64 和 /usr/local/cuda-9.0/lib64 中 您的环境中 PATH 和 LD_LIBRARY_PATH 的实际值是多少? @MatiasValdenegro 我已经在问题中提到了 PATH 和 LD_LIBRARY_PATH 的值。 这些不是值,取决于您如何设置它们,我们需要在您的环境中设置的实际值,只需在终端中执行 echo $PATH 和 echo $LD_LIBRARY_PATH 即可。 我想你可以看到 LD_LIBRARY_PATH 是怎么错的。 【参考方案1】:

您以错误的方式设置 LD_LIBRARY_PATH,我建议您这样做(这是一种标准):

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

【讨论】:

它仍然显示相同的错误。现在我的 LD_LIBRARY_PATH 是“/usr/local/cuda/lib64$LD_LIBRARY_PATH:+:”,路径是“/home/tpradhan/venvs/tensorflow/bin:/usr/local/cuda-9.0/bin:/home/ tpradhan/anaconda3/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/pycharmCE2017/bin:/usr /java/latest/bin:/opt/eclipse:/opt/ideaCE/bin:/opt/libreofice6.0/:/opt/ubin:/opt/ulibs/Qt5.6.2:/opt/pycharmCE2017/bin export LD_LIBRARY_PATH= /usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH:+::/home/tpradhan/.local/bin:/home/tpradhan/bin" . @shivank01 你的 LD_LIBRARY_PATH 仍然是错误的,似乎你没有改变任何给定的输出。 我根据你的回答改了。 @shivank01 究竟在哪个文件上?并且您在进行更改后是否重新启动了终端?【参考方案2】:

您可能需要下载并安装 NVIDIA cuDNN。

从https://developer.nvidia.com/rdp/cudnn-download下载 (如果您没有,您必须注册一个帐户才能下载)。运行时版本通常比开发者版本更稳定。

【讨论】:

这个 url 给了我 403 - Forbidden 嗨,如上所述,您需要注册一个免费帐户才能从该链接下载 CuDNN。【参考方案3】:

重新安装 CudNN-7.0.5,(确保从下面的链接中选择正确的版本)为我解决了这个问题。 您需要登录到您的 Nvidia 开发者帐户才能访问该链接。 (如果您没有 Nvidia 帐户,直接创建一个);

https://developer.nvidia.com/rdp/cudnn-archive

CudNN 的安装说明; https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html

但是我也遇到了如下错误;

已加载运行时 CuDNN 库:7.0.5,但源代码编译时使用:7.4.2。在 CuDNN 7.0 或更高版本的情况下,CuDNN 库主要和次要版本需要匹配或具有更高的次要版本。如果使用二进制安装,请升级您的 CuDNN 库。如果从源代码构建,请确保在运行时加载的库与编译配置期间指定的版本兼容。

因此,我不得不再次下载并安装正确的 CuDNN 版本,我使用上述错误消息中的信息并安装了 CuDNN 7.4.2,这修复了所有错误并且一切正常。

祝你好运!

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 您好,感谢您对我的回答进行审核。在查看了您的 cmets 后,我已经修改了答案。上面的链接现在不一定是这个问题的答案。但是,如果有同样问题的人可以按照我的建议解决问题,那就是重新安装包含适当文件并与安装的 cuda 版本兼容的正确 CuDNN 版本。【参考方案4】:

在 .bashrc 文件中添加以下路径:

export PATH=/usr/local/cuda-9.0/bin$PATH:+:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH


export PATH=/usr/local/cuda/bin$PATH:+:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

【讨论】:

【参考方案5】:

FWIW 很感兴趣,我创建了一个 shell script,它在 Debian 中安装了不同的 CUDA 版本,可以轻松移植到 Ubuntu:

【讨论】:

【参考方案6】:

原因是缺少一些库。 尝试安装

sudo apt install libcudnn7

【讨论】:

以上是关于Tensorflow:ImportError:libcudnn.so.7:无法打开共享对象文件:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:Keras 需要 TensorFlow 2.2 或更高版本。在 Windows 上通过 `pip install tensorflow` 安装 TensorFlow

tensorflow.keras.layers:ImportError:无法导入名称“CuDNNLSTM”

解决ImportError: No module named tensorflow的问题

Tensorflow:ImportError:libcudnn.so.7:无法打开共享对象文件:没有这样的文件或目录

解决 ImportError: cannot import name pywrap_tensorflow

ImportError:无法从“tensorflow.python.framework”导入名称“device_spec”