TensorFlow导入报错:找不到libcusolver.so.8.0文件该如何解决?
解决TensorFlow导入时的libcusolver.so.8.0缺失问题
我之前也碰到过完全一样的报错,当执行import tensorflow as tf时,系统找不到libcusolver.so.8.0这个共享库,直接导致TensorFlow原生运行时加载失败。先把你遇到的完整报错贴出来方便大家参考:
import tensorflow as tf
Traceback (most recent call last): File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module> from tensorflow.python.pywrap_tensorflow_internal import * File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module> _pywrap_tensorflow_internal = swig_import_helper() File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) File "/home/user/anaconda3/lib/python3.6/imp.py", line 243, in load_module return load_dynamic(name, filename, file) File "/home/user/anaconda3/lib/python3.6/imp.py", line 343, in load_dynamic return _load(spec) ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/__init__.py", line 24, in <module> from tensorflow.python import * File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/__init__.py", line 49, in <module> from tensorflow.python import pywrap_tensorflow File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 52, in <module> raise ImportError(msg) ImportError: Traceback (most recent call last): File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module> from tensorflow.python.pywrap_tensorflow_internal import * File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module> _pywrap_tensorflow_internal = swig_import_helper() File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) File "/home/user/anaconda3/lib/python3.6/imp.py", line 243, in load_module return load_dynamic(name, filename, file) File "/home/user/anaconda3/lib/python3.6/imp.py", line 343, in load_dynamic return _load(spec) ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory Failed to load the native TensorFlow runtime.
核心原因
这个报错的本质是你的系统缺少TensorFlow依赖的CUDA 8.0组件,或者CUDA 8.0的库路径没有被系统正确识别到。libcusolver.so.8.0是NVIDIA CUDA 8.0提供的线性求解库,旧版本的TensorFlow(比如1.x系列)对CUDA版本有严格的对应要求。
解决方案
1. 确认CUDA 8.0是否已安装
先检查系统里有没有CUDA 8.0:
ls /usr/local/cuda-8.0/lib64/libcusolver.so.8.0
如果返回文件不存在,说明你需要安装CUDA 8.0。注意要匹配你TensorFlow版本对应的CUDA要求(旧TF版本大多对应CUDA 8.0/9.0)。
2. 配置环境变量(已安装CUDA但路径未识别)
如果已经安装了CUDA 8.0,但系统找不到库,需要把CUDA的lib路径添加到LD_LIBRARY_PATH:
- 临时生效(当前终端):
执行完这个命令后,再尝试导入TensorFlow看看是否解决。export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH - 永久生效:
如果你用的是bash,编辑~/.bashrc文件,添加上面的export命令,然后执行:
如果你用的是zsh,就编辑source ~/.bashrc~/.zshrc,同样source生效。
3. 检查cuDNN版本是否匹配
除了CUDA,还要确保cuDNN的版本和CUDA 8.0兼容,比如cuDNN 5.1或6.0都是适配CUDA 8.0的版本,把cuDNN的库也放到CUDA的lib路径下,或者添加到LD_LIBRARY_PATH里。
内容的提问来源于stack exchange,提问作者ellibria
相关产品推荐
相关产品推荐

