因libcublas问题导致TensorFlow无法导入的技术问询
我来帮你搞定这个TensorFlow导入报错的问题,核心原因是TensorFlow依赖的CUDA 9.0库文件未被系统正确识别,结合你的Ubuntu 16.04+GTX1060+驱动390.48的环境,咱们一步步排查解决:
1. 确认CUDA 9.0是否已正确安装
首先检查系统里有没有CUDA 9.0的库文件:
ls /usr/local/cuda-9.0/lib64/libcublas.so*
如果输出里没有libcublas.so.9.0,说明你没安装CUDA 9.0——你的驱动390.48是支持CUDA 9.0/9.1/9.2的,但TensorFlow此时明确需要9.0版本,你需要下载并安装CUDA Toolkit 9.0(安装时注意选择“保留现有驱动”的选项,别覆盖当前的390.48驱动)。
如果已经装了CUDA 9.0,继续下一步。
2. 修正环境变量配置
你修改了~/.bashrc但没生效,大概率是路径指向不对。正确的配置应该直接绑定CUDA 9.0的具体目录,而不是依赖/usr/local/cuda这个可能指向其他版本的软链接:
打开~/.bashrc添加以下内容:
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH export PATH=/usr/local/cuda-9.0/bin:$PATH export CUDA_HOME=/usr/local/cuda-9.0
保存后执行命令让配置立即生效:
source ~/.bashrc
然后验证环境变量是否正确:
echo $LD_LIBRARY_PATH
确认输出里包含/usr/local/cuda-9.0/lib64。
3. 检查CUDA软链接指向
如果/usr/local/cuda这个通用软链接没指向CUDA 9.0,也会导致路径识别错误。执行以下命令查看链接状态:
ls -l /usr/local/cuda
如果输出显示链接到的是其他版本(比如cuda-9.2),重新建立软链接:
sudo rm /usr/local/cuda sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda
完成后重启终端,再尝试导入TensorFlow。
4. 匹配cuDNN和TensorFlow版本
别忘了CUDA 9.0需要搭配cuDNN 7.0.x版本,如果你装的是其他cuDNN版本,也会引发依赖问题。另外,确保你的TensorFlow版本和CUDA 9.0兼容——比如TensorFlow 1.8到1.10版本都适配CUDA 9.0,如果你装的是更高版本的TensorFlow,建议降级:
pip install tensorflow-gpu==1.10.0
完成以上步骤后,应该就能解决libcublas.so.9.0找不到的问题了。
内容的提问来源于stack exchange,提问作者HMLDude

