TensorFlow导入错误:_pywrap_tensorflow_internal.so文件无法找到求助
我之前在Arch系(比如EndeavourOS)上折腾TensorFlow的时候也碰到过几乎一模一样的问题,给你几个实用的排查和解决方向,你可以挨个试试:
1. 先确认TensorFlow和CUDA版本是否匹配
TensorFlow对CUDA、cuDNN的版本要求特别严格,版本不匹配很容易触发这种动态库找不到的错误。你可以先查自己当前的TensorFlow版本:
pip show tensorflow
然后对应TensorFlow的版本要求(比如TF 2.15对应CUDA 12.2,TF 2.14对应CUDA 12.1),看看你装的cuda-aur包里的CUDA版本是不是对应上了。如果版本不对,要么卸载现有TensorFlow装对应版本,要么换匹配的CUDA包。
2. 检查TensorFlow的安装方式是否有冲突
你现在的TensorFlow是装在用户目录下的.local路径里(pip用户级安装),而Arch系本身也有官方的TensorFlow包。两种安装方式可能会有冲突,你可以试试:
- 先卸载当前的TensorFlow:
pip uninstall tensorflow - 然后用Pacman安装官方的TensorFlow包(记得选对应CUDA版本的):
sudo pacman -S tensorflow
或者如果想用pip安装的话,确保装的是带CUDA支持的版本,比如TF 2.10+可以直接用:
pip install tensorflow[and-cuda]
这个命令会自动帮你配置好CUDA相关的依赖。
3. 配置动态库环境变量
有时候系统找不到.so文件,是因为CUDA的库路径没加到系统的动态库搜索路径里。你可以先临时测试一下:
在终端里运行:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
然后再运行你的训练脚本python3 train_drive.py ...,如果能正常运行的话,就把这个命令加到你的shell配置文件里(比如~/.bashrc或者~/.zshrc),这样每次打开终端都会自动加载这个路径。
4. 确认cuDNN是否正确安装
TensorFlow依赖cuDNN才能正常使用CUDA加速,你可以检查一下是否已经安装了匹配版本的cuDNN:
pacman -Qs cudnn
如果没找到的话,就安装对应CUDA版本的cuDNN包(比如CUDA 12.2对应cudnn8.9),Arch的AUR里应该有对应的包可以安装。
另外,你提供的完整错误和运行命令我也看过了,这个问题大概率是依赖版本不兼容或者库路径没配置导致的,按照上面的步骤应该能解决。
备注:内容来源于stack exchange,提问作者ciahoneypot

