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

标签 python-3.x tensorflow ubuntu-16.04

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

去年关闭。




Improve this question




我安装了Tensorflow 1.6.0 - 在 Python 3.6.4 环境中使用 anaconda 的 GPU 版本。

当我做 import tensorflow as tf ,我收到以下错误:

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

不同的版本:
  • cudnn : 7.1.1
  • cuda : 9.0.176
  • tensorflow : 1.6.0
  • Ubuntu : 16.04

  • 我知道 this但它并没有解决我的问题。

    最佳答案

    接受的答案是错误的(安装 nvidia-cuda-toolkit )。通过安装工具包,您基本上是在 nvidia 指南中已安装的 cuda 之上安装第二个 CUDA。
    问题原来是符号链接(symbolic link)的问题。灵感来自这个话题http://queirozf.com/entries/installing-cuda-tk-and-tensorflow-on-a-clean-ubuntu-16-04-install
    但实际分辨率不同
    所以在 CuDNN 期间的某一时刻安装nvidia教程会要求你这样做:

    sudo cp cuda/include/cudnn.h /usr/local/cuda/include
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
    sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
    
    这种方法的问题是使用过滤器复制文件 libcudnn*将破坏复制文件的符号链接(symbolic link)。相反,我建议运行以下命令,但它仍然会破坏链接:
    sudo cp --preserve=links cuda/lib64/libcudnn* /usr/local/cuda/lib64
    
    您可以通过运行 ls -lha libcudnn* 来验证链接。在 /usr/local/cuda/lib64文件夹。如果你碰巧没有看到这样的图片:

    lrwxrwxrwx 1 root root 13 May 2 20:02 libcudnn.so -> libcudnn.so.7

    lrwxrwxrwx 1 root root 17 May 2 20:02 libcudnn.so.7 -> libcudnn.so.7.6.5

    -rwxr-xr-x 1 root root 409M May 2 20:02 libcudnn.so.7.6.5

    -rw-r--r-- 1 root root 386M May 2 20:02 libcudnn_static.a


    然后你就发现了问题。实际的解决方案涉及执行以下操作:
    sudo rm /usr/local/cuda/lib64/libcudnn.so
    sudo rm /usr/local/cuda/lib64/libcudnn.so.7
    cd /usr/local/cuda/lib64/
    sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7
    sudo ln -s libcudnn.so.7 libcudnn.so
    
    删除旧的“链接”并创建新的。使用 ls -lha libcudnn* 再次验证链接.之后以详细模式运行以下命令:
    sudo ldconfig -v
    
    检查日志。 我不知道它到底做了什么,但事实证明这是非常重要的事情。此外,如果日志显示符号链接(symbolic link)已损坏或类似情况,那么 tensorflow将继续显示主题中提到的错误。
    奖金! 确保您将以下路径附加为最后几行 nano ~/.bashrc
    export PATH=/usr/local/cuda/bin:/opt/nvidia/nsight-compute/2019.4.0${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    export CUDADIR=/usr/local/cuda${CUDADIR:+:${CUDADIR}}
    export CUDA_HOME=/usr/local/cuda
    
    然后运行命令source ~/.bashrc以上所有步骤都假设您没有使用 nvidia-cuda-toolkit , 但改为使用 nvidia库达 repo 。
    此外,在安装 CUDA 时,请确保您的目标不是 10.2。 .在编写时 TF 支持的版本高达 Cuda 10.1 ,因此以下是安装必要版本的正确方法:
    sudo apt-cache policy cuda
    sudo apt-get install cuda=10.1.243-1
    
    验证人:
    nvcc --version
    nvidia-smi
    
    编辑:我发现运行 ldconfig 后应该避免看到的错误命令:

    /usr/local/cuda-10.1/targets/x86_64-linux/lib:

    ...

    libnppist.so.10 -> libnppist.so.10.2.0.243

    libcuinj64.so.10.1 -> libcuinj64.so.10.1.243


    >/sbin/ldconfig.real:/usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7 不是符号链接(symbolic link)

    libcudnn.so.7 -> libcudnn.so.7.6.5

    libnppc.so.10 -> libnppc.so.10.2.0.243

    libnppicom.so.10 -> libnppicom.so.10.2.0.243

    libnvgraph.so.10 -> libnvgraph.so.10.1.243

    /usr/lib/x86_64-linux-gnu/libfakeroot:

    ...


    如果您看到它,那么某些内容仍然配置错误。

    关于python-3.x - ImportError : libcudnn. so.7:无法打开共享对象文件:没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49656725/

    相关文章:

    installation - appium-chromedriver@4.0.0 安装脚本失败

    mysql - Ubuntu 16.04 更新后无法启动 mysql 服务器

    r - Python 中与 R 的 nlminb 最接近的函数是什么?

    python - 两个列表查找值

    typescript - 如何在网络 worker 中运行handpose tfjs模型

    tensorflow - 尝试了解 AutoGraph 和 tf.function : print loss in tf. 函数

    python-3.x - 无法停止 aiohttp websocket 服务器

    python - ctypes可变长度结构

    android - 如何修复此模块 'tensorflow' 没有属性 'lite'?

    json - 字段 'browser' 不包含 react 的有效别名配置