4、Python环境配置:Miniforge安装、创建虚拟环境、pip换源、常用库安装

好,咱们继续往下走。上一章我们把 Jetson 的系统刷好了,也连上了网络。现在要干一件非常核心的事——搭 Python 环境。

你可能会想:「Python 不是自带了吗?为啥还要折腾?」

嗯,这里要注意。Jetson 是 ARM 架构,跟咱们的 x86 电脑不一样。直接用系统自带的 Python,版本可能不对,包也可能装不上。我刚开始玩 Jetson 的时候,就因为这个踩过坑——装 OpenCV 装了一整天,最后发现是 Python 环境的问题。

所以,咱们老老实实从 Miniforge 开始。

4.1 为什么选 Miniforge?

你可能听说过 Anaconda、Miniconda。但在 Jetson 上,我推荐 Miniforge。

原因很简单:

  • Anaconda 官方不支持 ARM64 架构
  • Miniconda 虽然能用,但源在国外,下载慢
  • Miniforge 原生支持 ARM64,而且用的是 conda-forge 频道,包很全

说白了,Miniforge 就是为 ARM 设备量身定做的。我个人的习惯是,所有 Jetson 项目统一用 Miniforge,省心。

4.2 安装 Miniforge

先 SSH 连上你的 Jetson,或者直接接显示器操作也行。

第一步,下载安装脚本:

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh

如果下载慢,可以用我备用的国内镜像地址(记得替换版本号):

wget https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-aarch64.sh

第二步,运行安装:

bash Miniforge3-Linux-aarch64.sh

安装过程中会问你要不要初始化 conda,选 yes。然后重启终端,或者执行:

source ~/.bashrc

验证一下:

conda --version

看到版本号,就说明装好了。

小提示: 安装路径默认在 ~/miniforge3。我个人习惯不改路径,方便以后找。

4.3 创建虚拟环境

为什么要用虚拟环境?

你想想看,一个项目用 PyTorch 1.10,另一个用 2.0,如果全装在一起,迟早会冲突。我去年做一个多模型融合的项目,就是因为环境乱了,排查了整整两天。

所以,每个项目建一个独立环境,这是铁律。

创建 YOLO 专用的环境:

conda create -n yolo python=3.8

这里我选 Python 3.8,因为 YOLOv5 和 YOLOv8 对 3.8 支持最好。当然,你用 3.9 或 3.10 也行,但 3.8 最稳。

激活环境:

conda activate yolo

看到命令行前面多了个 (yolo),就说明成功了。

注意: 每次新开终端,都要先 conda activate yolo 才能进入你的环境。我刚开始老忘记,后来在 .bashrc 里加了一行提示,才改掉这个毛病。

4.4 pip 换源

默认的 pip 源在国外,下载速度嘛……你懂的。我曾经等一个包等了半小时,最后超时了。

换成清华源,速度能快 10 倍以上。

临时换源:

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

永久换源(推荐):

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

验证一下:

pip config list

看到 index-url 那一行,就说明换成功了。

核心要点: 换源后,所有 pip install 都会走国内镜像。如果某个包在清华源没有,可以临时换回官方源:pip install 包名 -i https://pypi.org/simple

4.5 安装常用库

好,环境有了,源也换了。现在装几个最常用的库。

先装 NumPy:

pip install numpy

再装 OpenCV。这里要注意,Jetson 上装 OpenCV 有两种方式:

  • 用 pip 装 opencv-python(简单,但可能不带 CUDA 加速)
  • 用 Jetson 官方提供的预编译包(带 CUDA,性能更好)

我建议先用 pip 装,够用:

pip install opencv-python

如果你需要 CUDA 加速的 OpenCV,后面我会专门讲怎么编译。

然后装 Matplotlib:

pip install matplotlib

验证一下:

python -c "import numpy; print(numpy.__version__)"
python -c "import cv2; print(cv2.__version__)"
python -c "import matplotlib; print(matplotlib.__version__)"

三个都能正常输出版本号,就说明装好了。

小技巧: 我习惯把常用库写到一个 requirements.txt 里,下次重建环境直接 pip install -r requirements.txt,一步到位。

4.6 避坑指南

最后,分享几个我踩过的坑:

  • 权限问题: 不要用 sudo pip install,会破坏系统 Python。如果遇到权限错误,加 --user 参数。
  • 内存不足: Jetson 内存有限,装大包时可能会卡死。建议用 -c conda-forge 安装,conda 会处理依赖。
  • 版本冲突: 如果装某个包时报依赖冲突,别硬装。先 conda list 看看已安装的版本,再决定升级还是降级。

我曾经在一个项目里,因为 OpenCV 和 PyTorch 的版本不兼容,浪费了整整一个下午。后来学乖了,每次装新包前,先查一下兼容性。

好了,这一章就到这里。环境搭好了,下一章咱们就开始跑第一个 YOLO 检测程序。