关闭。这个问题不符合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/