ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Windows下Anaconda安装与conda命令实战指南

Windows下Anaconda安装与conda命令实战指南 很多刚接触 Python 的朋友第一次听说 Anaconda 时往往一头雾水明明装个 Python 就能写代码为什么还要多装一个这么重的玩意但真正上手做完一两个项目后你就会明白Anaconda 带来的环境隔离能力能直接决定你在 Python 这条路上走得顺不顺。这篇文章就用我自己的实际经验带你在 Windows 上把 Anaconda 装好再把日常最高频的 conda 命令全部捋一遍包括换源、建环境、装 PyTorch、接进 PyCharm 这些真正天天会用的操作。我在各种 Windows 版本上都装过 AnacondaWin10、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 选择哪个版本的 PythonAnaconda 每个大版本会捆绑一个默认 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 python3.9这里-n labels是给环境取名为 labelspython3.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 numpy1.26.2 conda install numpy1.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 python3.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-forgeCondaValueError: 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 environmentInterpreter 那边选择你 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 是不是环境里的 pythonwhere 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 python3.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 给你的最大自由。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进