9、Python环境管理:Miniconda/虚拟环境搭建、Jupyter Lab配置、常用ML库安装(PyTorch/TensorFlow)

好,咱们进入第9章。说实话,Python环境管理这块,是很多Jetson开发者的“噩梦”。我见过太多人,一开始图省事直接在系统Python里pip install,结果搞到后面依赖冲突,整个系统都崩了。嗯,我自己也踩过这个坑。

在Jetson平台上,Python环境管理尤其重要。因为JetPack自带的Python版本和库,都是和系统深度绑定的。你乱动系统Python,搞不好连刷机的心都有了。所以,我的建议是——从一开始就用虚拟环境。

核心原则: 永远不要污染系统Python。所有项目依赖,全部隔离在虚拟环境里。

9.1 为什么选择Miniconda?

你可能听说过Anaconda,那玩意儿太大了,好几个G。在Jetson这种存储空间金贵的板子上,我推荐用Miniconda。它只包含conda包管理器和Python,你需要什么库,再自己装。说白了,就是轻量级、够用。

我个人习惯用Miniconda来管理所有Python项目。你想想看,每个项目一个独立环境,互不干扰。做计算机视觉的用PyTorch,做语音识别的用TensorFlow,环境之间完全隔离。多清爽。

9.2 安装Miniconda

在Jetson上安装Miniconda,和x86平台略有不同。因为Jetson是ARM架构,你得下载对应的aarch64版本。

具体步骤:

  1. 下载Miniconda安装脚本(aarch64版)
  2. 运行安装脚本
  3. 初始化conda
# 下载Miniconda(aarch64版本)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh

# 运行安装脚本
bash Miniconda3-latest-Linux-aarch64.sh

# 按照提示,一路yes即可
# 安装完成后,重新打开终端,或执行:
source ~/.bashrc

# 验证安装
conda --version
小提示: 安装过程中,它会问你是否要初始化conda。建议选yes,这样会自动配置环境变量。如果你忘了,后面手动source也行,但麻烦。

9.3 创建和管理虚拟环境

环境建好了,咱们来创建第一个虚拟环境。我一般会给环境起个有意义的名字,比如项目名+Python版本。

# 创建一个名为 jetson_ml 的环境,Python版本3.8
conda create -n jetson_ml python=3.8

# 激活环境
conda activate jetson_ml

# 查看当前环境中的包
conda list

# 退出环境
conda deactivate

# 列出所有环境
conda env list

这里要注意一点:Jetson上有些库可能没有ARM版本的conda包。遇到这种情况,我会先用conda装能装的,剩下的用pip搞定。我曾经在一个项目中,conda找不到opencv的ARM版本,最后用pip install opencv-python才解决。

避坑指南: 我曾经在Jetson上直接用conda install tensorflow,结果装了个x86版本的,跑起来直接报错。后来才发现,TensorFlow的ARM版本需要从NVIDIA的官方源安装。所以,装库之前,先确认一下架构兼容性。

9.4 配置Jupyter Lab

Jupyter Lab是我在Jetson上做原型验证的标配。它比Jupyter Notebook更现代,支持多标签页、文件浏览器、终端集成。说白了,就是一个浏览器里的IDE。

安装和配置步骤:

# 激活你的环境
conda activate jetson_ml

# 安装Jupyter Lab
conda install -c conda-forge jupyterlab

# 生成配置文件
jupyter lab --generate-config

# 设置密码(可选,但建议设置)
jupyter lab password

配置远程访问(如果你像我一样,习惯在PC上远程连接Jetson):

# 编辑配置文件
vim ~/.jupyter/jupyter_lab_config.py

# 找到并修改以下配置项:
c.ServerApp.ip = '0.0.0.0'  # 允许所有IP访问
c.ServerApp.port = 8888      # 端口号
c.ServerApp.open_browser = False  # 不自动打开浏览器
c.ServerApp.allow_remote_access = True  # 允许远程访问

启动Jupyter Lab:

jupyter lab --no-browser --port=8888

然后在PC浏览器里输入:https://你的JetsonIP:8888,输入密码,就能连上了。

我的习惯: 我会在Jupyter Lab里同时打开一个终端、一个Python交互式窗口、和一个笔记本文件。调试代码时,终端跑脚本,交互式窗口测试小片段,笔记本记录实验过程。效率很高。

9.5 安装常用ML库

好,重头戏来了。在Jetson上装PyTorch和TensorFlow,和x86平台完全不一样。因为Jetson用的是NVIDIA的定制版,必须从NVIDIA的官方源安装。

9.5.1 安装PyTorch

NVIDIA为Jetson提供了预编译的PyTorch wheel包。你直接pip安装就行,但要注意版本对应关系。

# 激活环境
conda activate jetson_ml

# 安装PyTorch(以JetPack 5.1为例,PyTorch 1.12)
wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.12.0-cp38-cp38-linux_aarch64.whl

pip install torch-1.12.0-cp38-cp38-linux_aarch64.whl

# 验证安装
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

如果输出显示True,说明PyTorch已经正确识别了Jetson的GPU。嗯,这一步很关键。我遇到过有人装了半天,结果torch.cuda.is_available()返回False,白忙活一场。

版本对应表(JetPack 5.x):
JetPack版本 PyTorch版本 Python版本
5.0 1.11.0 3.8
5.1 1.12.0 3.8
5.1.1 1.13.0 3.8

9.5.2 安装TensorFlow

TensorFlow在Jetson上的安装稍微复杂一点。NVIDIA提供了tensorflow-on-jetson的wheel包,但你需要从NVIDIA的Jetson Zoo下载。

# 安装TensorFlow(以JetPack 5.1为例)
pip install https://developer.download.nvidia.com/compute/redist/jp/v51/tensorflow/tensorflow-2.11.0+nv23.01-cp38-cp38-linux_aarch64.whl

# 验证安装
python -c "import tensorflow as tf; print(tf.__version__); print(tf.config.list_physical_devices('GPU'))"
避坑指南: 我曾经在Jetson上直接pip install tensorflow,结果装了个CPU版本的。跑模型时,GPU利用率一直是0%,我还以为是代码写错了。后来才发现,TensorFlow的GPU版本必须从NVIDIA源装。所以,千万别偷懒。

9.5.3 其他常用库

除了PyTorch和TensorFlow,还有一些库是ML项目必备的。我一般会一次性装好:

# 安装常用库
pip install numpy scipy matplotlib pandas scikit-learn

# 计算机视觉相关
pip install opencv-python pillow

# 模型可视化
pip install torchviz netron

# 数据处理
pip install h5py tqdm
小技巧: 你可以把所有这些安装命令写到一个requirements.txt文件里,下次重建环境时,直接pip install -r requirements.txt,一键搞定。

9.6 知识体系总览

为了让你对整个Python环境管理有个全局认识,我画了张图。你看一眼,心里就有数了。

Python环境管理知识体系 Miniconda 虚拟环境管理 (create/activate/deactivate) Jupyter Lab 配置 (远程访问/密码) ML库安装 (PyTorch / TensorFlow / 其他) PyTorch (NVIDIA源) TensorFlow (Jetson Zoo) 其他库 (numpy/opencv等) 核心原则:永远不要污染系统Python环境

9.7 环境管理最佳实践

最后,分享几个我在项目中总结出来的经验:

  • 每个项目一个环境: 别偷懒。哪怕只是个小demo,也建个新环境。我见过有人把所有项目塞到一个环境里,最后依赖冲突到崩溃。
  • 记录环境配置:conda env export > environment.yml导出环境配置。这样别人(或者未来的你)可以一键重建。
  • 定期清理: 不用的环境就删掉。Jetson的存储空间有限,别让一堆废弃环境占着地方。
  • 注意Python版本: Jetson上有些库只支持特定Python版本。比如PyTorch 1.12只支持Python 3.8。建环境时,先查清楚。
一句话总结: Miniconda + 虚拟环境 + Jupyter Lab + NVIDIA官方源 = Jetson上最稳的Python开发环境。

好,这一章就到这儿。你按照这个流程走一遍,Python环境这块基本就不会出问题了。下一章咱们聊聊更深入的东西。

公众号:蓝海资料掘金营,微信deep3321