Python环境的概念
你可以把 Python 环境理解成:
一个独立的 Python 工作房间。
每个房间里,都可以放自己的:
- Python 版本
- 第三方库
- 库的版本
- 项目依赖
而且不同房间之间,基本互不影响。
比如你电脑上有两个项目。
项目 A 是老项目,需要:
Python 3.8
numpy 1.23
torch 1.x项目 B 是新项目,需要:
Python 3.11
numpy 2.x
torch 2.x如果整个电脑只有一个 Python,那么就容易出现这种情况:
项目A:我要 numpy 1.23!
项目B:不行,我要 numpy 2.0!你把 numpy 升级到 2.0,项目 A 可能直接不能跑了。
所以我们不让它们共用同一套东西,而是分别建立两个环境:
电脑
│
├── 环境 project_a
│ ├── Python 3.8
│ ├── numpy 1.23
│ └── torch 1.x
│
└── 环境 project_b
├── Python 3.11
├── numpy 2.x
└── torch 2.x这就是 Python 环境最核心的意义:
给不同项目准备不同的一套 Python + 第三方库,避免互相打架。
Miniconda 是干嘛的?
Miniconda 可以先粗暴理解成:
一个专门帮你管理这些 Python 环境的工具。
比如你告诉它:
conda create -n yolo python=3.10意思就是:
“Conda,给我新建一个叫
yolo的房间,里面装 Python 3.10。”
之后:
conda activate yolo意思就是:
“我现在进入 yolo 这个房间。”
然后你执行:
pip install numpy这个 numpy 默认就是安装到 yolo 环境里,而不是安装到其他环境里。
退出:
conda deactivate就是:
“离开当前这个 Python 房间。”
环境到底是什么东西?
它其实没那么神秘。
本质上就是电脑上的一个文件夹。
例如 Miniconda 可能有:
miniconda3/
├── bin/
├── lib/
└── envs/
├── yolo/
├── rknn/
└── opencv/例如:
envs/yolo/里面实际上就有这个环境自己的:
python
pip
numpy
torch
opencv
...所以所谓的:
conda activate yolo本质上就是告诉电脑:
“接下来执行
python、pip等命令的时候,优先使用yolo文件夹里的那些程序。”
为什么 activate 之后 Python 会变?
比如:
conda activate yolo
which python可能得到:
/home/chuiyu/miniconda3/envs/yolo/bin/python换一个环境:
conda activate rknn
which python可能变成:
/home/chuiyu/miniconda3/envs/rknn/bin/python你虽然输入的都是:
python但是实际上调用的是不同的 Python 程序。
可以类比成:
你说:“拿螺丝刀给我。”
在 A 工具箱里:
→ 拿的是 A 工具箱的螺丝刀
切换到 B 工具箱:
→ 拿的是 B 工具箱的螺丝刀conda activate 就相当于:
切换当前正在使用的工具箱。
base 又是什么?
安装 Miniconda 以后经常看到:
(base) chuiyu@ubuntu:~$这个 base 其实就是:
Miniconda 自己默认创建的第一个 Python 环境。
也就是:
Miniconda
│
├── base
├── yolo
├── rknn
└── cpp_test通常不建议什么东西都塞到 base 里面。
更推荐:
base
主要负责 conda 本身
yolo
专门做 YOLO
rknn
专门做 RKNN
其他项目
再创建其他环境这样以后不会越来越乱。
conda 和 pip 又是什么关系?
这个也很容易混。
可以这样记:
conda
↓
负责管理“房间”
也可以负责往房间里装东西
pip
↓
主要负责往当前房间里安装 Python 第三方库例如:
conda create -n demo python=3.10创建房间。
conda activate demo进入房间。
pip install requests往这个房间里面安装 requests。
当然 conda 自己也可以:
conda install numpy所以两者都有“安装软件包”的能力,只不过 conda 还负责环境管理。
如果你是准备给别人上课,我建议第一句话直接这么讲:
Python 环境就是一套独立的 Python + 第三方库。不同项目使用不同环境,这样一个项目升级、删除、修改库,不会把其他项目搞坏。Miniconda 就是帮助我们创建、切换、删除这些环境的工具。
然后画这张图就足够了:
Miniconda
│
┌────────────┼────────────┐
↓ ↓ ↓
base yolo rknn
│ │ │
Python3.12 Python3.10 Python3.8
│ │
torch rknn
numpy numpy
opencv opencv学生只要先理解:
环境 = 独立工具箱
conda create = 买一个新工具箱
conda activate = 切换当前工具箱
conda deactivate = 退出当前工具箱
pip install = 往当前工具箱里放工具
后面再教 create / activate / list / remove / pip install,就非常顺了。
