在Raspbian Stretch上源码编译TensorFlow启动时遇ImportError问题
解决Raspbian Stretch源码编译TensorFlow后的ImportError问题
我之前在树莓派的Raspbian Stretch上编译TensorFlow时也碰到过几乎一模一样的问题,给你几个我亲测有效的排查和解决步骤:
1. 补全编译依赖,排查版本兼容性
编译TensorFlow需要一堆底层依赖,很容易因为漏装或版本不对触发导入错误:
- 先补全线性代数相关库,这是TF底层计算的核心依赖:
sudo apt-get install libatlas-base-dev libopenblas-dev libblas-dev - 确认Python3.5的开发包和pip工具都正常:
sudo apt-get install python3.5-dev python3-pip - 检查SWIG版本(TF对旧版SWIG兼容性很差):运行
swig -version,如果版本低于3.0.10,建议编译安装最新稳定版的SWIG。
2. 修复系统库路径问题
这个报错大概率是系统找不到TF编译生成的底层共享库,你可以这么处理:
- 先找到编译后生成的
libtensorflow_framework.so文件,一般在TF源码目录的bazel-bin/tensorflow文件夹下 - 临时把该路径加入系统库路径验证:
export LD_LIBRARY_PATH=/你的TF源码路径/bazel-bin/tensorflow:$LD_LIBRARY_PATH - 如果验证有效,把这个配置永久写入
~/.bashrc,或者直接把库文件复制到系统默认库目录:sudo cp /你的TF源码路径/bazel-bin/tensorflow/libtensorflow_framework.so /usr/local/lib/ sudo ldconfig
3. 重新编译并安装TF包
有时候编译生成的pip包会因为中途中断或缓存问题安装不完整,建议重新走一遍打包安装流程:
- 进入TF源码目录,重新编译pip包:
bazel build //tensorflow/tools/pip_package:build_pip_package bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg - 先卸载旧版本,再安装新生成的包:
注意:尽量用pip3 uninstall -y tensorflow pip3 install /tmp/tensorflow_pkg/tensorflow-*.whlpip3 install --user安装到用户目录,避免sudo权限导致的路径混乱。
4. 排查Python环境冲突
Raspbian Stretch默认会同时存在Python2和Python3,确保你全程用的是Python3.5环境:
- 运行
pip3 --version确认它指向的是Python3.5 - 测试时直接用
python3启动解释器,不要用python(默认可能是Python2)
5. 用最小代码验证
完成上述步骤后,用最简化的代码测试导入:
import tensorflow as tf print(tf.__version__)
如果还是报错,记得把完整的报错信息贴出来(你现在只给出了开头部分,后面的undefined symbol或cannot open shared object file这类关键信息,才能更精准定位问题)
内容的提问来源于stack exchange,提问作者Lexicographical
相关产品推荐
相关产品推荐

