9、Python环境管理:Miniconda/虚拟环境搭建、Jupyter Lab配置、常用ML库安装(PyTorch/TensorFlow)
好,咱们进入第9章。说实话,Python环境管理这块,是很多Jetson开发者的“噩梦”。我见过太多人,一开始图省事直接在系统Python里pip install,结果搞到后面依赖冲突,整个系统都崩了。嗯,我自己也踩过这个坑。
在Jetson平台上,Python环境管理尤其重要。因为JetPack自带的Python版本和库,都是和系统深度绑定的。你乱动系统Python,搞不好连刷机的心都有了。所以,我的建议是——从一开始就用虚拟环境。
9.1 为什么选择Miniconda?
你可能听说过Anaconda,那玩意儿太大了,好几个G。在Jetson这种存储空间金贵的板子上,我推荐用Miniconda。它只包含conda包管理器和Python,你需要什么库,再自己装。说白了,就是轻量级、够用。
我个人习惯用Miniconda来管理所有Python项目。你想想看,每个项目一个独立环境,互不干扰。做计算机视觉的用PyTorch,做语音识别的用TensorFlow,环境之间完全隔离。多清爽。
9.2 安装Miniconda
在Jetson上安装Miniconda,和x86平台略有不同。因为Jetson是ARM架构,你得下载对应的aarch64版本。
具体步骤:
- 下载Miniconda安装脚本(aarch64版)
- 运行安装脚本
- 初始化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
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才解决。
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,输入密码,就能连上了。
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版本 | 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'))"
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
9.6 知识体系总览
为了让你对整个Python环境管理有个全局认识,我画了张图。你看一眼,心里就有数了。
9.7 环境管理最佳实践
最后,分享几个我在项目中总结出来的经验:
- 每个项目一个环境: 别偷懒。哪怕只是个小demo,也建个新环境。我见过有人把所有项目塞到一个环境里,最后依赖冲突到崩溃。
- 记录环境配置: 用
conda env export > environment.yml导出环境配置。这样别人(或者未来的你)可以一键重建。 - 定期清理: 不用的环境就删掉。Jetson的存储空间有限,别让一堆废弃环境占着地方。
- 注意Python版本: Jetson上有些库只支持特定Python版本。比如PyTorch 1.12只支持Python 3.8。建环境时,先查清楚。
好,这一章就到这儿。你按照这个流程走一遍,Python环境这块基本就不会出问题了。下一章咱们聊聊更深入的东西。