首页 > 解决方案 > Tensorflow 导入错误:libcudnn.so.5 No such file or directory

问题描述

我正在尝试tensorflow-gpu==1.2.0在 google-colab 中使用。我确实安装了包 cuda-8.0 并下载并将 libcudnn.so.5 移动到 /usr/local/cuda/lib64 中,但我仍然收到此错误:

ImportError: Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 29, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 25, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory

我尝试遵循下一个解决方案: ImportError: libcudnn when running a TensorFlow program 但它对我不起作用。我很乐意得到一些帮助。

标签: pythontensorflowjupyter-notebookgoogle-colaboratory

解决方案


如果找不到该文件,则它不在链接器正在查找的位置。

ld 手册页

链接器使用以下搜索路径来定位所需的共享库:

  1. -rpath-link 选项指定的任何目录。
  2. -rpath 选项指定的任何目录。-rpath 和 -rpath-link 的区别在于 -rpath 选项指定的目录包含在可执行文件中并在运行时使用,而 -rpath-link 选项仅在链接时有效。只有使用 --with-sysroot 选项配置的本机链接器和交叉链接器才支持以这种方式搜索 -rpath。
  3. 在 ELF 系统上,对于本机链接器,如果未使用 -rpath 和 -rpath-link 选项,请搜索环境变量“LD_RUN_PATH”的内容。
  4. 在 SunOS 上,如果未使用 -rpath 选项,请搜索使用 -L 选项指定的任何目录。
  5. 对于本机链接器,搜索环境变量“LD_LIBRARY_PATH”的内容。
  6. 对于本机 ELF 链接器,将在共享库的“DT_RUNPATH”或“DT_RPATH”中的目录中搜索它所需的共享库。如果存在“DT_RUNPATH”条目,则忽略“DT_RPATH”条目。
  7. 默认目录,通常是 /lib 和 /usr/lib。
  8. 对于 ELF 系统上的本机链接器,如果文件 /etc/ld.so.conf 存在,则在该文件中找到的目录列表。

如果未找到所需的共享库,链接器将发出警告并继续链接。

另请参阅ldconfig 手册页

ldconfig 创建必要的链接并缓存到在命令行指定的目录、文件 /etc/ld.so.conf 和受信任的目录(/lib 和 /usr/lib)中找到的最新共享库。缓存由运行时链接器 ld.so 或 ld-linux.so 使用。ldconfig 在确定哪些版本应该更新其链接时会检查它遇到的库的标头和文件名。

...

选项

-v

详细模式。打印当前版本号、扫描的每个目录的名称以及创建的任何链接。覆盖安静模式。


推荐阅读