很多刚接触 Python 的朋友,第一次听说 Anaconda 时往往一头雾水:明明装个 Python 就能写代码,为什么还要多装一个这么重的玩意?但真正上手做完一两个项目后,你就会明白,Anaconda 带来的环境隔离能力,能直接决定你在 Python 这条路上走得顺不顺。这篇文章就用我自己的实际经验,带你在 Windows 上把 Anaconda 装好,再把日常最高频的 conda 命令全部捋一遍,包括换源、建环境、装 PyTorch、接进 PyCharm 这些真正天天会用的操作。
我在各种 Windows 版本上都装过 Anaconda,Win10、Win11,从 Python 3.7 时代一路用到现在的 3.12,踩过的坑比如下载慢到怀疑人生、装完发现 conda 不是内部命令、conda activate 报错,全都遇到过。这篇文章不是官方文档的翻译,而是把每一步为什么这么做、踩坑时怎么排查都讲清楚,你可以把它当成一份照着做就能走的操作手册。
1. 为什么非要用 Anaconda:聊聊 Python 环境那些痛点
很多人觉得 Anaconda 就是个"预装了很多库的 Python",这个理解不算错,但太片面了。Anaconda 本质上是一套体系,核心是 conda 这个包管理器,再加上它附带的一堆预装库和工具。要理解它解决了什么问题,先得知道裸装 Python 有多难受。
1.1 裸装 Python 的三个大坑
第一个坑是全局环境太脆弱。用 pip 装包是直接往系统 Python 里塞,今天为了项目 A 装了 numpy 1.22,明天项目 B 需要 numpy 2.0,一升级,项目 A 可能直接跑不起来。更别提有些包依赖的底层库版本互相冲突,比如同时需要 TensorFlow 和 PyTorch,两者要求的 CUDA 相关依赖不一样,全局环境下能把人逼疯。
第二个坑是 Python 版本切换麻烦。有些老项目还在用 Python 3.6 甚至 2.7,有些新项目需要 3.11、3.12。裸装只能装一个默认版本,切换起来要么改环境变量,要么用些第三方工具,非常折腾。
第三个坑是卸载不干净。Windows 上卸载 Python 再重装,残留的路径缓存、pip 安装的包散落在各个目录,很容易让新环境"带病工作"。
1.2 conda 和 pip 到底什么关系
这是一个被问了无数遍的问题。简单说,conda 不仅能管 Python 包,还能管 Python 解释器本身,甚至能管非 Python 的底层依赖,比如 C 库、CUDA 工具包。pip 只能管 Python 包。所以 conda 是"更大的一只手",pip 是"更小的一只手"。
打个比方:conda 像一个外卖平台,不仅能送餐厅的菜(Python 包),还能把餐厅的厨师(Python 解释器)、锅具(底层依赖)一起调度;pip 更像只能在特定几家店点餐。
创建虚拟环境时,conda 会为你复制一个独立的 Python 解释器,然后在这个环境里装包,各个环境互不干扰。这正是 Anaconda 最核心的价值。
注意:装好 Anaconda 后,系统里可能同时存在 conda 和 pip。常规建议是优先用 conda 装包,conda 没有的再用 pip。混用时要小心,先激活目标环境再执行 pip install,否则容易把包装到别的环境里。
2. 安装前的四个关键决定:下载源、版本、路径与安装类型
别小看安装这一步,提前决定好下面四件事,能省掉后面一大半的麻烦。
2.1 下载源:官方源还是国内镜像
Anaconda 官方安装包大约 500MB 到 1GB 左右,放在国外服务器上。国内用户直接访问官方源,下载速度常常只有几十 KB,甚至直接失败。我见过太多人卡在下载这步就放弃了。
我的做法是直接走清华大学开源软件镜像站(mirrors.tuna.tsinghua.edu.cn),一直很稳定。下载地址结构是:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/进去后找带Windows-x86_64.exe结尾的安装包,比如Anaconda3-2024.10-1-Windows-x86_64.exe。这里注意,后缀是 exe 的才是 Windows 安装包。
提示:如果你想用最新的 Anaconda,可以先看官方 Release 页面确认最新版本号,再回镜像站找对应文件。镜像站通常和官方同步会有几天延迟,但这完全不重要,Anaconda 不是那种必须追新的软件,稳定最重要。
2.2 选择哪个版本的 Python
Anaconda 每个大版本会捆绑一个默认 Python 版本。举个例子,Anaconda3-2024.10 捆绑的是 Python 3.12,而 Anaconda3-2022.05 捆绑的是 Python 3.9。
选择原则很简单:如果你的项目需要特定 Python 版本,比如有些深度学习框架还没适配 3.12,那就选捆绑版本更接近的那个安装包。不过说实话,不用太纠结,因为 conda 随时可以创建其他 Python 版本的环境。你完全可以用 Anaconda 2024 的安装包,然后单独建一个 Python 3.9 的环境,两者不冲突。
2.3 安装路径:不要含中文和空格
Windows 上各种工具链对路径中的中文和空格支持参差不齐。Anaconda 默认安装路径是在用户目录下,比如C:\Users\你的用户名\anaconda3,如果你的用户名是中文(比如C:\Users\小明),后期装一些大型库时更容易出怪问题。
我的建议是安装时改成一个简单的路径,比如D:\Anaconda3或者C:\Anaconda3,干净利落。改路径会带来一个附加好处:重装系统后数据更好清理。
2.4 安装类型:Just Me 还是 All Users
安装过程中 Anaconda 会问Install for: Just Me / All Users。选Just Me就行。All Users 需要管理员权限,而且目录写入到 Program Files 下面,很多包编译时对带空格的路径有兼容问题。Just Me 安装在自己的用户目录,写入权限可控,不折腾。
第二处最关键的选项是Add Anaconda3 to my PATH environment variable。安装器默认是不勾选的,网上很多教程让大家勾上,这里我要给出不一样的看法。
勾上 PATH 的坏处是:你的 cmd 和 PowerShell 里全局都能用 conda,但同时会遮蔽系统里已有的 Python,导致一些别的软件(比如某些 IDE 自带的 Python 插件、命令行工具)被"劫持"到 Anaconda 环境,引发兼容问题。不勾的话,你在终端里直接敲 conda 会提示找不到命令,需要先通过 Anaconda Prompt 进入。
我的选择是:不勾,然后装完用conda init手动初始化。这个后面会细讲,操作其实很简单,而且比装完再改环境变量更干净。
3. 完整安装流程:从下载到看到 (base) 环境
下面按步骤走一遍安装流程。我会把每一步的具体界面、勾选内容和常见问题都写清楚。
3.1 下载与双击安装的细节
下载完成后,右键 exe,选择"以管理员身份运行"还是直接双击?实际上 Just Me 模式不需要管理员权限,直接双击就行。
进入安装界面,一路 Next,到Choose Install Type这一步:
- 第一处选Just Me。
- 第二处Advanced Options,我建议这样勾:
Add Anaconda3 to my PATH environment variable:不勾Register Anaconda3 as my default Python 3.*:可以勾上,这样大多数 IDE 会自动识别到 Anaconda 的 Python,省心。
安装过程耗时看机器。机械硬盘可能要 10 分钟以上,SSD 快一些。期间进度条卡住不用慌,它可能是在解压大型文件。装完后会让你勾选是否安装 VS Code,看需要,不需要就跳过。
3.2 验证安装与解决 conda 不是内部命令
装完后打开开始菜单,找到Anaconda Prompt (Anaconda3),点开。正常情况下你会看到命令行提示符前面有个(base),这就代表 Anaconda 的基本环境已经激活。
然后输入:
conda --version如果输出了conda 24.x.x之类的版本号,说明安装成功。
但如果你图省事直接在普通的 cmd 或者 PowerShell 里敲 conda,大概率会看到:
'conda' 不是内部或外部命令,也不是可运行的程序或批处理文件这就是因为你没勾 PATH。解决办法不是去改环境变量,而是老老实实回到 Anaconda Prompt,先执行:
conda init这个命令会把 conda 的初始化脚本写入 PowerShell 和 cmd 的启动配置里。执行完成后关掉终端再重新打开,普通 cmd 里也能用 conda 了。
注意:经常看到网上有人说 conda 装完不能 activate,提示
CommandNotFoundError: Run 'conda init' before 'conda activate'。这就是因为在非 Anaconda Prompt 终端里没有执行 conda init。执行一次,重开终端,问题解决。
3.3 关闭默认激活 base
每次打开新终端,前面都挂着(base),有些人不喜欢,但如果未来你经常在不同环境里切换,保留默认激活其实更省事。如果确实想去掉,运行:
conda config --set auto_activate_base false想恢复就改回 true。这里要提醒一点:如果设成了 false,新终端里敲 conda 命令依然有效,但当前不处于任何 conda 环境,装包前记得手动 activate。
4. conda 核心命令速查与实操:环境管理和包管理
conda 的核心功能分两大块:环境管理和包管理。下面是我自己日常最常用的一组命令,背下来基本上可以应对 90% 的场景。
4.1 环境管理:创建、激活、退出、删除
创建新环境,指定名字和 Python 版本:
conda create -n labels python=3.9这里-n labels是给环境取名为 labels,python=3.9是指定版本。命令执行时 conda 会去下载 Python 3.9 和它的底层依赖,网络不好容易失败,建议先换好国内源再进行(换源方法在第 5 章)。
激活环境:
conda activate labels激活后命令行的前缀会从(base)变成(labels),此时你用的就是 labels 这个独立环境。注意有些老教程还让你用source activate,那是 Linux/macOS 时代的写法,Windows 上用conda activate就对了。
退出环境:
conda deactivate查看所有环境:
conda env list输出会列出所有环境名称和路径,当前环境前有个星号*。顺便说一句,base 环境的路径一般就是你 Anaconda 的安装目录。
删除不再用的环境:
conda env remove -n labelsclone 一个一模一样的环境做备份或者测试:
conda create -n labels_backup --clone labels4.2 包管理:安装、卸载、升级、搜索
在环境里安装包,先激活环境再操作:
conda activate labels conda install numpy如果想指定版本:
conda install numpy=1.26.2 conda install "numpy>=1.20,<1.27"批量安装(把包名依次写下即可):
conda install numpy pandas scikit-learn matplotlib卸载包:
conda remove numpy查看当前环境已装的包:
conda list搜索某个包在 conda 源里有哪些可用版本:
conda search numpy升级某个包:
conda update numpy升级 conda 本身:
conda update conda不建议手贱频繁升级 conda。我遇到过升级后和某个旧环境兼容性出问题的情况,毕竟生产环境动不如静。
4.3 conda、pip 混合操作的纪律
前面说过 conda 和 pip 可以共存,但要有纪律。我的经验是:
- 先 conda 搜,有就 conda 装。
- conda 没有的包,保持当前环境激活状态,用
pip install 包名装。 - 千万不要在环境 A 里激活状态下,用 pip 全局装包,那样会污染 base。
- 一个环境里混用 conda 和 pip 装包装多了之后,尽量不要用 conda 去更新已装包的版本,容易把 pip 装的包关系搞乱。
提示:有经验的人建议用 requirements.txt 管理 pip 依赖,但 conda 环境建议用
conda env export > environment.yml导出整个环境配置,别人拿到这个 yml 后一条命令就能重建环境:conda env create -f environment.yml。
5. 国内用户自救指南:换源、加速、常见报错全解
国内用 conda 最大的痛就是慢。默认源在国外,下载包时经常卡住、超时。好在国内有成熟的镜像机制,换源后速度提升非常明显。
5.1 换源:一份可持续用的 .condarc 配置
Anaconda 的包源配置存在用户目录下的.condarc文件里。推荐直接用命令行写入配置,最省事:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes还可以加上 conda-forge 源,如果需要大量非默认库,推荐加上:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/之后执行conda config --show channels可以查看当前源的优先级,排在上面的会优先生效。这里要注意的是,多个源的优先级从高到低排列,最上面那个最先被访问。
如果你想清理换成默认源,直接把.condarc文件删除即可。Windows 下这个文件一般在C:\Users\你的用户名\.condarc。
5.2 下载安装包还是慢?试试这些办法
换了源之后大部分场景都不会再卡了,但如果依然慢,常见原因有两个:
第一个是创建环境时时长还是太久。建议加上-c指定源,比如:
conda create -n test python=3.9 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/第二个是某些包大且依赖多,比如 PyTorch、TensorFlow。这类包建议直接用国内镜像或官方指定源。PyTorch 的安装命令里通常带--index-url,比如:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118不过这个官方源在国内也不算快,也可以用镜像站的 PyTorch wheel 目录。这要看你显卡的 CUDA 版本,建议先查驱动对应的 CUDA 版本再选。
5.3 排查 conda 常见的几个报错
我把自己遇到频率最高的三类报错整理成一张表:
| 报错现象 | 原因 | 解决办法 |
|---|---|---|
CondaHTTPError: HTTP 404或者连接失败 | 源地址拼错或镜像源某个子目录不存在 | 核对 .condarc 的 URL,去掉不存在的目录,如 free 目录在部分新版本已停更但 URL 仍然开放 |
CondaError: Run 'conda init' before 'conda activate' | 在非 Anaconda Prompt 终端使用 conda activate | 先执行conda init,关闭终端重开 |
Solving environment: ... found conflicts | 包与包之间依赖冲突,或 conda 版本过低 | 先conda update conda,再尝试conda install 包名 --channel conda-forge |
CondaValueError: Malformed version string | 指定的包版本号格式有误 | 检查版本号,或去掉=直接敲包名安装 |
UnavailableInvalidChannel: The channel is not accessible or is invalid | 源地址不可访问 | 确认域名能通,换官方源或另一家镜像 |
如果确定源没问题,但 conda 还是解析依赖失败,可以试试专门解决依赖环境的 conda-forge 通道,加上--channel conda-forge后 conda 会用更全的包库来解析。代价是解析时间可能更长,但成功率更高。
注意:换源后,如果之前在 base 或某个环境里已经存在很多 conda 包,再执行 conda install 时它可能会尝试把所有包装成镜像源里的版本。这个操作正常,只是耗时。不想折腾的话,可以只在新环境使用新源,旧环境继续旧源。
6. 进阶玩法:和 PyCharm 联动、迁移环境、踩坑经验
环境管理熟练之后,日常开发就会顺畅得多。下面聊聊怎么把 Anaconda 嵌进 IDE,以及做一些环境迁移时的注意事项。
6.1 PyCharm 里配置 conda 环境
PyCharm 应该是很多 Python 开发者的主力 IDE。它和 Anaconda 的配合分两步。
第一步,让 IDE 认识 conda 环境。打开 PyCharm,进入File -> Settings -> Project: 你的项目名 -> Python Interpreter,点右上角齿轮图标,选择Add,然后在弹出的窗口里选Conda Environment,再选Existing environment,Interpreter 那边选择你 Anaconda 安装目录下python.exe。比如装到D:\Anaconda3,就选D:\Anaconda3\python.exe。
第二步,让 PyCharm 使用你某个 conda 虚拟环境的解释器。路径一般在D:\Anaconda3\envs\labels\python.exe。选好之后,PyCharm 右下角会显示当前环境名,终端窗口也会自动激活对应 conda 环境。
很多新人在这里犯的错是:在 cmd 里激活了某个环境,然后打开 PyCharm,发现解释器还是 base。因为 PyCharm 的解释器是独立配置的。你必须在 Settings 里手动指定,它不会自动跟随你终端的 activate。
6.2 环境迁移与 conda 目录搬家的正确姿势
有时候 C 盘空间吃紧,想把 Anaconda 目录搬到 D 盘。很多人直接一刀剪切过去,结果大部分程序直接瘫痪。原因很简单:Anaconda 的很多配置文件和脚本里写死了绝对路径。
正确迁移方法是:先停掉所有 conda 环境进程,用conda env list记下所有环境路径,然后在新的路径下重新装一个 Anaconda(或者如果你只要某个环境,可以只搬 envs 目录)。迁移后conda env list如果发现原路径不存在,用conda config --set envs_dirs指定新路径:
conda config --set envs_dirs ["D:/Anaconda3/envs"]还有一招,是把整个环境导出成 yml,在新机器上重建,这种方法最适合跨机器迁移环境,不用管路径:
conda activate labels conda env export > labels.yml把 labels.yml 放到新机器,执行:
conda env create -f labels.yml迁移之后记得在终端里重新执行conda init,因为路径变了,之前写入初始化脚本的路径也带着老地址。
6.3 踩坑实录:激活了环境但 import 不了包
这是我最常被问到的问题:明明conda activate labels输出了(labels),但python -c "import numpy"还是报 ModuleNotFoundError。
排查思路分两层。第一层,确认当前 python 是不是环境里的 python:
where python如果结果显示的路径不是D:\Anaconda3\envs\labels\python.exe,说明 PATH 里的 Python 顺序有问题,把 base 的 Python 路径或系统 Python 路径排到了当前环境前面。重启终端基本能解决,因为 conda init 写的脚本在每次启动时会动态调整 PATH。第二层,确认环境里是不是真的没装这个包:
conda list numpy如果第一条where python正常,第二条显示没有 numpy,那就说明你确实是在这个环境里没装包,用conda install numpy装上即可。
提示:"激活环境"这件事的本质就是修改 PATH,让
python和pip指向当前环境的可执行文件。理解这点后,很多诡异的路径问题都能猜个八九不离十。
6.4 创建 PyTorch 环境的完整示例
最后放一个完整的示例,帮你把前面所有命令串起来。假设我要创建一个pytorch39环境,专门做深度学习:
# 1. 创建环境 conda create -n pytorch39 python=3.9 -y # 2. 激活环境 conda activate pytorch39 # 3. 安装基础库 conda install numpy pandas matplotlib -y # 4. 安装 PyTorch(根据显卡 CUDA 版本选择 index-url) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # 5. 验证 python -c "import torch; print(torch.__version__, torch.cuda.is_available())"如果显卡不支持 CUDA,把第 4 步换成 CPU 版本:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu验证时torch.cuda.is_available()返回 False 并不代表安装失败,只是当前环境无法用 GPU 算,CPU 版也能跑,只是性能弱一些。
Anaconda 这套体系,刚上手会觉得"重",但用顺了之后,你会发现它帮你省掉的是最耗精力的环境噩梦。我个人的建议是别追求把所有命令一次背下来,先记住三个:conda create -n、conda activate、conda install,其他命令用到时候再查。装好之后,第一时间把源换了,再建一个自己名字命名的测试环境随便折腾,环境弄坏了直接删掉重建,毫无心理负担,这才是 conda 给你的最大自由。