第一章:Python多环境
Anaconda 安装与使用:从“能装上”到“会管理”
刚开始学习 Python 时,很多人以为最难的是语法。真正做过几个项目后才发现,另一个问题同样让人头疼:
- 项目 A 需要 Python 3.9,项目 B 却需要 Python 3.11;
- 项目 A 依赖旧版 TensorFlow,项目 B 需要新版 PyTorch;
- 昨天还能运行的代码,今天安装一个库后突然报错;
- 把代码发给别人,对方却因为“环境不一样”无法运行。
这些问题的根源通常不是代码,而是 Python 环境混乱。
Anaconda 的价值,就是帮助我们把 Python、第三方库和不同项目的依赖管理清楚。本文将从零开始介绍 Anaconda 的安装与使用,并进一步讲明白虚拟环境、Conda 和 uv 之间的关系。
一、Anaconda 到底是什么?
可以把 Python 项目想象成做饭:
- Python 是厨房里的基本炊具;
- NumPy、Pandas 等第三方库 是各种食材和调料;
- 虚拟环境 是相互独立的厨房;
- Conda 是负责准备和切换厨房的管家;
- uv 是负责快速采购和整理食材的管家;
- Anaconda 则是一套已经配好炊具、管家和常用食材的“整体厨房”。
因此,Anaconda 不只是 Python 安装包,而是一个面向数据科学、机器学习和科学计算的 Python 发行版。它通常包含 Python、Conda、常用科学计算库以及相关工具。
1. Anaconda、Conda、Python 和 uv 的区别
| 名称 | 它是什么 | 主要负责什么 |
|---|---|---|
| Python | 编程语言及解释器 | 执行 Python 代码 |
| Anaconda | 一套 Python 发行版 | 提供 Python、Conda 和常用工具 |
| Conda | 环境管理工具 | 创建、激活、切换和删除环境 |
| uv | 快速的 Python 包管理工具 | 解析、安装和管理 Python 第三方库 |
Conda 和 uv 都具备安装软件包的能力,但本文只使用它们各自最擅长的一部分:Conda 负责环境和 Python 版本,uv 负责项目中的全部第三方库。 除了通过 Conda 安装 uv 工具本身,项目依赖不再使用 conda install 安装。
2. Anaconda 和 Miniconda 怎么选?
- Anaconda:预装内容较多,安装后比较方便,适合初学者和希望开箱即用的人。
- Miniconda:只包含 Python、Conda 等基础组件,体积更小,软件按需安装,适合喜欢精简环境的人。
两者的核心工具都是 Conda,所以本文中的大部分 Conda 命令对两者都适用。
二、为什么一定要使用虚拟环境?
假设所有项目都共用同一个 Python 环境:
项目 A:需要 package 1.0
项目 B:需要 package 2.0同一个环境中通常无法同时保留同一个包的两个版本。给项目 B 升级后,项目 A 就可能无法运行。
虚拟环境的解决思路很直接:一个项目使用一个独立环境。
Anaconda
├── base 环境
├── project-a 环境:Python 3.9 + package 1.0
└── project-b 环境:Python 3.11 + package 2.0这些环境各有自己的 Python 和第三方库。切换环境,就像从一间厨房走进另一间厨房,不会把不同项目的“食材”混在一起。
最重要的使用原则:不要所有项目都直接装在 base 环境中,尽量做到一个项目一个环境。
三、安装前的准备
安装前建议做好以下准备:
- 预留数 GB 的可用磁盘空间,后续创建环境和安装深度学习框架还会占用更多空间。
- 从 Anaconda 官方下载页面 下载安装包,尽量不要使用来源不明的镜像或修改版。
- 选择与操作系统和 CPU 架构匹配的安装包。
- 已经安装过 Python 通常也不必急着卸载。安装后通过命令确认当前使用的是哪个 Python 即可。
- 为减少部分旧工具的兼容问题,安装路径和用户名最好使用简单的英文字符。
不同版本的安装界面可能略有差异,但核心选项基本一致。
四、在 Windows 上安装 Anaconda
1. 运行安装程序
下载 64 位 Windows 安装包后,双击运行。一般可以选择 Just Me,即只为当前用户安装,通常不需要管理员权限。
在选择安装位置时,可以使用默认路径。如果磁盘空间不足,也可以换成其他简单、易于识别的路径,例如:
D:\Anaconda3不要把安装目录误认为项目目录。Anaconda 的安装位置和你的代码存放位置是两回事。
2. 理解高级安装选项
安装过程中可能看到以下选项:
- Add Anaconda to my PATH environment variable:一般不建议勾选。直接修改系统 PATH 可能与其他 Python 或开发工具发生冲突。需要使用 Conda 时,可以打开开始菜单中的 Anaconda Prompt。
- Register Anaconda as my default Python:用于将 Anaconda 注册为系统默认 Python。没有其他 Python 管理需求时可以保留;如果电脑上有多个 Python 工具链,应根据自己的开发方式选择。
如果安装后不知道应该打开哪个终端,优先使用开始菜单里的 Anaconda Prompt,不要一开始就手动修改一堆系统环境变量。
3. 验证安装
打开 Anaconda Prompt,依次执行:
conda --version
python --version
where python如果前两条命令能显示版本号,说明 Conda 和 Python 已经可以运行。where python 会列出当前能够找到的 Python 路径,可用来判断是否出现了多个 Python 相互干扰的情况。
五、在 macOS 或 Linux 上安装 Anaconda
1. macOS
macOS 用户可以先确认芯片类型:
- Apple M 系列芯片:选择 Apple Silicon 对应版本;
- Intel 芯片:选择 Intel 对应版本。
如果使用图形安装包,按提示完成安装即可。安装结束后,关闭并重新打开终端,再执行:
conda --version
python --version
which python如果使用命令行安装包,可在终端中运行类似下面的命令,具体文件名以实际下载内容为准:
bash ~/Downloads/Anaconda3-最新版本号-MacOSX-arm64.sh安装程序会依次询问许可协议、安装位置以及是否初始化 Conda。同意初始化后,Conda 会修改 shell 的启动配置,让新终端能够识别相关命令。
2. Linux
进入安装包所在目录,运行下载的 .sh 文件,例如:
bash Anaconda3-最新版本号-Linux-x86_64.sh阅读许可协议并确认安装路径。安装结束时,通常建议允许安装程序执行 Conda 初始化。完成后重新打开终端,或者让当前 shell 重新加载配置:
source ~/.bashrc使用 zsh 时,对应配置文件通常是 ~/.zshrc。最后使用 conda --version 验证安装。
六、第一次创建自己的环境
安装完成后,Conda 通常会有一个名为 base 的默认环境。可以把 base 看作管理入口,不建议把所有项目依赖都塞进去。
下面创建一个名为 ai-demo 的环境,并指定 Python 3.11:
conda create -n ai-demo python=3.11 -y这条命令包含四个关键信息:
create:创建环境;-n ai-demo:环境名称为ai-demo;python=3.11:在该环境中安装指定版本的 Python;-y:确认安装计划后自动继续,省略交互确认。
创建完成后,激活环境:
conda activate ai-demo激活成功后,终端提示符前通常会出现:
(ai-demo)这表示后续执行的 python、uv 等命令,应优先使用 ai-demo 环境中的程序。可以再检查一下:
python --versionWindows 使用:
where pythonmacOS 或 Linux 使用:
which python工作完成后,可以退出当前环境:
conda deactivate注意:关闭终端不会删除环境。 下次重新打开终端后,再次执行 conda activate ai-demo 即可继续使用。
七、使用 uv 安装和管理第三方库
在本文的工作流中,Conda 只负责创建、激活、切换和删除环境,项目的第三方库全部交给 uv 管理。 除了安装 uv 工具本身,不再使用 conda install 安装项目依赖。
1. 在 Conda 环境中安装 uv
uv 是一款用 Rust 编写的 Python 包管理工具,特点是依赖解析和安装速度快。先激活目标环境,再从 conda-forge 安装 uv:
conda activate ai-demo
conda install -c conda-forge uv -y
uv --version能够显示版本号,说明 uv 安装成功。这种安装方式会把 uv 放在 ai-demo 环境中,因此使用前要确保该环境已经激活。
2. 使用 uv 安装第三方库
保持 Conda 环境处于激活状态,然后执行:
uv pip install requests也可以一次安装多个库:
uv pip install numpy pandas matplotlib安装指定版本:
uv pip install "包名==版本号"这里的 uv pip 是 uv 提供的包管理命令,下载、依赖解析和安装都由 uv 完成。激活 Conda 环境后,uv 会根据 CONDA_PREFIX 环境变量识别当前环境,所以每次安装前都要先激活目标环境,避免把库装到其他位置。
如果项目已经提供了 requirements.txt,可以批量安装其中记录的依赖:
uv pip install -r requirements.txt3. 查看、升级和卸载软件包
查看当前环境中的软件包:
uv pip list查看某个软件包的详细信息:
uv pip show requests升级某个软件包:
uv pip install --upgrade requests卸载某个软件包:
uv pip uninstall requests升级和卸载都可能影响依赖这个库的其他程序,操作后应重新运行项目测试。如果安装后程序仍然提示找不到包,优先检查:安装包时激活的 Conda 环境,是否就是运行程序时使用的环境。
八、用 Anaconda 运行 JupyterLab
JupyterLab 适合交互式编程、数据分析和记录实验过程。建议把它安装到实际使用的项目环境中:
conda activate ai-demo
uv pip install jupyterlab
jupyter lab正常情况下,浏览器会自动打开 JupyterLab 页面。终端会显示本地访问地址,一般是 localhost 或 127.0.0.1 地址。
这里的 localhost 指的是 当前这台电脑,不是互联网上的公开网站。启动服务后不要直接关闭运行它的终端;需要停止服务时,可在终端中按 Ctrl+C。
如果打开 Notebook 后发现找不到当前环境中的库,通常是 Notebook 使用了其他环境的 Python。可以安装并注册当前环境的内核:
conda activate ai-demo
uv pip install ipykernel
python -m ipykernel install --user --name ai-demo --display-name "Python (ai-demo)"重新打开 JupyterLab 后,选择 Python (ai-demo) 内核即可。
九、保存并复现项目依赖
环境配好后,不要只靠记忆记录安装步骤。由于第三方库统一由 uv 管理,项目依赖也应使用 uv 能够读取的 requirements.txt 保存,而不是依赖 Conda 的环境导出记录。
1. 查看并记录依赖
查看当前环境的软件包及其版本:
uv pip list以 包名==版本号 的形式查看精确版本:
uv pip freeze在项目根目录创建 requirements.txt,记录项目需要的主要依赖,例如:
numpy
pandas
matplotlib
requests如果需要精确复现当前环境,可以参照 uv pip freeze 的输出,在 requirements.txt 中记录具体版本。这个文件应与项目代码一起保存。
2. 根据依赖文件恢复项目
在一台新电脑上,可以先用 Conda 创建并激活环境,再安装 uv,最后由 uv 恢复全部第三方库:
conda create -n ai-demo python=3.11 -y
conda activate ai-demo
conda install -c conda-forge uv -y
uv pip install -r requirements.txt如果 Conda 环境已经存在,只需激活环境并执行最后的 uv 安装命令。这样分工很清晰:Conda 恢复 Python 环境,uv 恢复项目依赖。
十、删除不需要的环境
虚拟环境会占用磁盘空间。确认某个环境不再需要后,可以先退出该环境,再将其删除:
conda deactivate
conda remove -n ai-demo --all删除环境只会删除该环境中的 Python 和软件包,不会自动删除你的项目代码。但为了保险起见,执行前仍应确认环境名称,尤其不要误删仍在使用的环境。
十一、常见问题与排查思路
1. 提示“conda 不是内部或外部命令”或“conda: command not found”
说明当前终端没有找到 Conda。
- Windows:先改用 Anaconda Prompt;
- macOS 或 Linux:关闭并重新打开终端;
- 检查安装时是否完成了 Conda 初始化;
- 不建议一遇到问题就随意向 PATH 添加多个 Python 路径。
2. conda activate 无法正常使用
可能是当前 shell 尚未初始化。可以执行:
conda init然后彻底关闭并重新打开终端。Windows PowerShell 也可以明确执行:
conda init powershell初始化完成后,同样要重开终端。
3. 安装了库,代码却提示 ModuleNotFoundError
最常见的不是安装失败,而是“装在一个环境,运行在另一个环境”。
依次检查:
conda env list
python --version
uv pip show 包名Windows 再执行 where python,macOS 或 Linux 再执行 which python,确认安装和运行使用的是同一套 Python。
4. 使用 uv 安装软件包时提示依赖冲突
可以尝试:
- 阅读报错信息,找出分别是哪两个依赖提出了冲突的版本要求;
- 检查软件包是否支持当前的 Python 版本;
- 减少不必要的版本限制,不要同时指定互相冲突的版本;
- 为新项目创建独立环境,而不是强行修改已有项目的环境。
不要轻易使用“强制忽略依赖”之类的参数,那通常只是把问题留到运行阶段。
5. 网络下载失败
先检查网络、代理和软件源配置,再重试或更换可信镜像。不要为了省事关闭 SSL 安全校验,也不要复制一长串自己并不理解的网络配置。
十二、推荐的使用习惯
- 一个项目一个环境,不要所有项目共用 base。
- base 环境保持精简,主要把它当作 Conda 的管理入口。
- 创建环境时明确 Python 版本,减少不同机器上的不确定性。
- 先激活环境,再安装包、运行代码和启动编辑器。
- 第三方库统一使用 uv 管理,不要再混用 Conda 安装项目依赖。
- 把
requirements.txt和项目代码一起保存,方便以后复现。 - 更新依赖前先备份
requirements.txt,不要无目的地频繁升级全部软件包。 - 遇到报错先确认当前环境和 Python 路径,很多“玄学问题”其实都是环境错位。
十三、常用命令速查表
| 目的 | 命令 |
|---|---|
| 查看 Conda 版本 | conda --version |
| 查看所有环境 | conda env list |
| 创建环境 | conda create -n 环境名 python=3.11 -y |
| 激活环境 | conda activate 环境名 |
| 退出环境 | conda deactivate |
| 安装 uv | conda install -c conda-forge uv -y |
| 使用 uv 安装库 | uv pip install 包名 |
| 使用 uv 查看库 | uv pip list |
| 查看库的详细信息 | uv pip show 包名 |
| 使用 uv 升级库 | uv pip install --upgrade 包名 |
| 使用 uv 卸载库 | uv pip uninstall 包名 |
| 查看精确依赖版本 | uv pip freeze |
| 批量安装依赖 | uv pip install -r requirements.txt |
| 删除整个环境 | conda remove -n 环境名 --all |
结语
学习 Anaconda,重点不是背下所有命令,而是建立一个清晰的概念:代码运行在哪个环境中,这个环境里有哪些 Python 和第三方库。
掌握 Conda 的 create、activate、deactivate,以及 uv 的 install、list、uninstall 等核心操作后,你就已经能够完成大多数日常环境和依赖管理工作。以后无论学习数据分析、人工智能,还是部署自己的 Python 项目,“Conda 管环境、uv 管依赖,一个项目一个环境”都会是一个简单却非常可靠的习惯。