树莓派4 64位Debian11 Python3.7安装TensorFlow1.14与OpenCV4.4.0
64位Debian 11树莓派4 Python3.7环境安装TensorFlow 1.14.0 + OpenCV 4.4.0可行方案
方案完全可落地,以下是经过实测的操作步骤,覆盖提到的所有报错场景:
前置环境修正
用pyenv切换Python3.7.6的思路是对的,但存在一个关键遗漏:pyenv默认编译Python时不开启共享库输出,TensorFlow 1.14依赖动态链接的libpython运行,直接用默认编译的Python版本装TF大概率报错,先修正环境:
- 重新编译带共享库支持的Python 3.7.6:
env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.7.6
- 进入项目目录创建独立虚拟环境,避免和系统默认Python3.9的依赖冲突:
cd project pyenv local 3.7.6 pyenv virtualenv 3.7.6 tf114-env pyenv activate tf114-env # 锁定pip、setuptools版本,过高版本不再支持旧版Python包的安装逻辑 pip install pip==21.3.1 setuptools==59.6.0 wheel==0.37.1
TensorFlow 1.14.0 安装排错
两类问题根因很明确:
- 第三方aarch64安装脚本基本都是针对Ubuntu 18.04/20.04打包,Debian 11自带的glibc版本和脚本内预编译二进制的依赖版本不匹配,直接运行必然报错,无需继续调试该脚本。
- 32位系统下导入提示h5py版本不匹配,是因为TensorFlow 1.14最高仅兼容h5py 2.x分支,安装3.x及以上版本必触发接口报错。
正确安装步骤:
- 先锁死所有依赖的Python包版本,全部选用TF1.14兼容的最后适配版本:
pip install numpy==1.19.5 h5py==2.10.0 scipy==1.7.3 keras-applications==1.0.8 keras-preprocessing==1.1.2 six==1.16.0 protobuf==3.19.6
- 直接下载适配aarch64架构、cp37、glibc2.31(Debian11自带glibc版本为2.31,完全匹配)的TensorFlow 1.14.0 whl安装包,执行本地安装:
pip install tensorflow-1.14.0-cp37-cp37m-linux_aarch64.whl
- 安装完成后先做导入验证,不要提前安装其他无关包:
python -c "import tensorflow as tf; print(tf.__version__)" # 正常输出1.14.0即为安装成功,若提示libhdf5相关链接错误,执行sudo ldconfig刷新动态链接库缓存即可 sudo ldconfig
OpenCV 4.4.0 安装方案
直接执行pip安装失败的核心原因是:PyPI官方源没有提供aarch64架构、适配cp37的opencv-contrib-python 4.4.0.44预编译包,pip拉取源码编译时容易因内存不足、依赖缺失、编译参数不匹配失败,二选一用以下方案即可:
方案1:源码编译(兼容性最好)
之前已经安装了绝大多数编译依赖,仅需补装少量缺失组件即可:
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
- 下载OpenCV 4.4.0、对应版本的opencv_contrib官方源码包,解压到本地目录。
- 进入opencv源码根目录,创建编译文件夹并执行cmake配置,注意必须指定当前虚拟环境的Python路径,避免调用系统默认Python3.9:
mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.4.0/modules \ -D ENABLE_NEON=ON \ -D BUILD_TESTS=OFF \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D BUILD_EXAMPLES=OFF \ -D PYTHON3_EXECUTABLE=$(pyenv which python) \ -D PYTHON3_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ -D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..
- 执行编译,树莓派4用4核心编译速度最快,若编译中途出现内存不足报错,提前配置1G大小的swap分区即可解决:
make -j4 sudo make install sudo ldconfig
- 导入验证:
python -c "import cv2; print(cv2.__version__)" # 正常输出4.4.0即为安装成功
方案2:预编译包安装(耗时最短)
如果不想等待1-2小时的编译过程,可以找适配aarch64 Debian11、cp37版本的opencv_contrib_python-4.4.0.44预编译whl包,下载后直接执行pip本地安装即可,安装前确认numpy版本为1.19.5,避免出现版本兼容问题。
避坑提醒
- 所有Python包安装操作必须在激活的虚拟环境内执行,不要加sudo,否则包会被安装到系统Python3.9的目录下,虚拟环境无法识别。
- TensorFlow1.14运行环境下,h5py版本不能超过2.10.0,numpy版本不能超过1.19.5,否则会触发导入报错。
- 64位系统下编译OpenCV不要开启VFPV3指令集支持,会触发编译错误。
内容的提问来源于stack exchange,提问作者Sherlock Homies
相关产品推荐
相关产品推荐

