当然不止树莓派,配置python环境都可能存在这个问题
可能是因为安装的 numpy
或者 opencv
版本与 Python 的包路径不匹配。下面是问题的常见原因及解决方法:【方法一和二优先考虑】
原因分析
-
多版本 Python 环境冲突:
- 树莓派上可能有多个版本的 Python,例如
python3.7
和python3.9
。 pip3
安装的numpy
可能与python3
命令所指向的 Python 版本不一致。
- 树莓派上可能有多个版本的 Python,例如
-
pip
安装路径问题:- 显示
Defaulting to user installation
表明numpy
被安装在用户的本地路径下,而python3
没有找到该路径。
- 显示
-
系统自带的
numpy
旧版本冲突:- 系统
/usr/lib/python3/dist-packages
中有旧版本的numpy
,可能导致冲突。
- 系统
-
依赖问题:
OpenCV
依赖的某些系统库可能缺失。
解决方法(推荐前三种方法-可能同时采用尝试)
方法 1:检查 Python 和 pip 版本匹配!!!
-
检查默认的 Python 和
pip
路径:bashpython3 --version which python3 pip3 --version which pip3
确保两者的路径一致,例如:
- 如果
python3
是/usr/bin/python3
,则pip3
应该指向/usr/bin/pip3
。
- 如果
-
如果路径不一致,可以指定 Python 版本的
pip
:bashpython3.7 -m pip install numpy python3.7 -m pip install opencv-python 或者使用与使用与 python3 一致的 pip /usr/bin/python3 -m pip install opencv-python 这样可以确保 OpenCV 安装在 /usr/bin/python3 对应的环境中
方法 2:检查并修复安装路径!!!
-
查看
numpy
的实际安装路径:bashpython3 -m site
输出示例:
/usr/local/lib/python3.7/dist-packages /home/pi/.local/lib/python3.7/site-packages
-
确认
numpy
是否安装在其中一个路径中:bashls /home/pi/.local/lib/python3.7/site-packages/numpy
-
如果安装路径正确,但 Python 未加载,可以手动设置路径:
bashexport PYTHONPATH=/home/pi/.local/lib/python3.7/site-packages:$PYTHONPATH
-
确认后重启终端,并重试:
bashpython3 -c "import numpy; print(numpy.__version__)"
方法 3:系统包的路径增删查!!!
-
有时候一个环境下有多个相同包,怎么升级也不对,发现根本没有导入到正确的。
一旦成功导入了某个包,改变了导入顺序后,要重启kernel才能生效
pythonprint(sys.path) 查看系统路径和优先搜索顺序 print(numpy.__file__) 查看这个包来自哪个路径 print(numpy.__version__) 查看这个包的版本 sys.path.insert(0, 'path') 插入系统路径到最优先的顺序 sys.path.remove('path') # 从系统路径中去除掉
其他方法 4:重新安装 numpy
-
卸载所有 numpy:
bashpip3 uninstall numpy -y sudo apt remove python3-numpy -y
-
重新安装:
bashpip3 install numpy --no-cache-dir
其他方法 5:使用虚拟环境隔离
为了避免系统环境的冲突,可以创建一个 Python 虚拟环境并重新安装 numpy
和其他依赖。
-
创建虚拟环境:
bashpython3 -m venv venv source venv/bin/activate
-
安装依赖:
bashpip install --upgrade pip pip install numpy
-
测试:
bashpython -c "import numpy; print(numpy.__version__)"