十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Windows下Miniconda安装配置指南:从零搭建干净的Python环境

Windows下Miniconda安装配置指南:从零搭建干净的Python环境 我这个月被问了不下五次类似的问题新买的 Windows 电脑想做 Python 开发到底该装什么环境装 Python 官网版还是 AnacondaMiniconda 又是什么东西今天我就把这些年实际用下来的结论一次性说清楚围绕 Windows 上 Miniconda 的下载、安装、配置、使用和排错给你一条保姆级的完整路径。你只要跟着步骤走从零开始也能在半小时内得到一个干净、可控、可以随意折腾的 Python 环境后面装包、换版本、开项目都不会再把系统搞乱。要说明的是这绝不是把官方文档翻译一遍而是把我自己在 Windows 上反复装过几十遍之后总结出来的经验和踩过的坑都放进来。Miniconda 这个工具说起来很简单就是一个轻量级的 Python 环境管理器加包管理器但真正用顺的人其实不多。很多人用着用着就把 base 环境搞得乱七八糟或者因为安装时一个勾选没选对后面天天跟 PATH 较劲。这篇文章我会把这些隐藏细节全部拆开讲新手照着做老手也可以拿来对照检查自己的习惯。1. 为什么推荐用 Miniconda1.1 Miniconda 的本质Python 环境管理器加包管理器Miniconda 本质上是 Anaconda 的精简版核心只有两个东西conda 这个包管理器和 Python 运行时。Anaconda 里预装了几百个常用的科学计算包而 Miniconda 只带最基础的包剩下的你装什么用什么。这个差异决定了它的最大优点干净、小巧、可控。安装目录默认也就几百 MB而 Anaconda 动辄好几个 GB。更关键的是Miniconda 保留了 Anaconda 最核心的能力——创建相互隔离的 Python 环境。你可以为项目 A 创建一个 Python 3.9 的环境为项目 B 创建一个 Python 3.11 的环境两个环境里的包版本互不干扰。这一点在调试老项目、复现论文代码、测试不同依赖版本时极其重要。我用过很长一段时间的系统 Python 加 venv也重度用过 Anaconda最后稳定在 Miniconda 上。原因很朴素venv 只能隔离包不能方便地切换 Python 小版本Anaconda 又太臃肿装完后光磁盘占用就劝退。Miniconda 正好在两者中间既有 conda 的版本管理和环境隔离又没有多余的预装包适合大多数开发者和技术爱好者。1.2 相比 Anaconda 和官方 PythonMiniconda 好在哪里如果你是刚入门可能会觉得 Anaconda 开箱即用省事。但从长期使用来看Anaconda 预装的那些包往往不是最新版而且因为包太多创建环境、解决依赖冲突时会变慢。反观 Miniconda你随时可以用一行命令搭出想要的环境装包速度取决于你装的包有多少。这里要重点说一下 conda 和 pip 的定位差异。conda 是跨语言的包管理器除了 Python 包还能管理非 Python 的库比如 CUDA 相关组件、MKL 这类底层计算库。pip 则主要覆盖 PyPI 上的 Python 包。因此在数据计算、机器学习这类场景下conda 能帮你把一些比较难编译的底层库直接装成预编译版本省去本机编译的折磨。而系统自带的 Python 加 pip 的组合做不到这一点或者说需要你额外处理编译工具链。在 Windows 环境里这一点尤其重要。很多 Python 包在 Linux 上一条 pip 命令就能装好到了 Windows 上可能因为缺编译器直接报错比如常见的 Microsoft Visual C 14.0 is required。用 conda 装的时候它通常会直接下载帮你编译好的二进制文件绕开这个坑。1.3 哪些场景最需要它如果你属于下面几类人Miniconda 几乎是刚需。第一类是刚学 Python 的初学者需要一个不会把自己电脑搞坏的环境第二类是做数据分析、机器学习、科学计算的人需要 numpy、pandas、scipy 这类底层库还希望装起来顺畅第三类是需要在多个 Python 版本之间切换的开发者第四类是喜欢尝试各种开源项目又怕装完一堆依赖后系统环境变乱的人。我自己的习惯是每个项目单独建一个 conda 环境项目结束、环境不用了就删掉重来一遍也就几分钟。这个习惯让我几乎没有遇到过“把系统 Python 搞挂了”这种问题。系统干净工作心情也干净。2. 下载安装前的三个决定2.1 版本选择64 位还是 32 位、Python 版本怎么挑先给结论现代的 Windows 电脑无脑选 Windows 64 位版本就行别去碰 32 位。Miniconda 官网提供的下载文件通常以 Miniconda3 Windows 64-bit 开头后面的 py 版本号指安装包自带的基础 Python 版本。关于基础 Python 版本的选择一般原则是选当前主流版本往下降一两个比如主流的 Python 3.12 出来了你装自带 Python 3.11 的 Miniconda 版本通常更稳因为很多第三方包对新版本的支持有滞后。当然你也可以装最新的反正之后用 conda 创建新环境时可以指定任意版本的 Python安装包自带的 Python 版本并不会限制你。这里不太需要纠结先用基础环境把 conda 跑起来具体项目的 Python 版本放到创建环境时再去决定。注意下载路径要认准官网不要从乱七八糟的下载站拿安装包。官网入口一般是 docs.conda.io/en/latest/miniconda.html页面下面有一个 Recent Miniconda3 installers 区域Windows 相关的要么是 .exe 的图形安装包要么是 .zip 的免安装包。新手直接用 .exe 就好zip 版更适合需要自己控制环境变量的高级玩法。2.2 安装到默认目录还是 D 盘安装路径选择上网上争论很多我的看法是如果你 C 盘空间充足直接用默认的 C 盘路径最省心。因为 Windows 下很多工具默认扫描用户目录下的配置安装在 C 盘用户目录里权限和生产环境兼容性都最好。如果你的 C 盘空间紧张想装到 D 盘也完全可以只需要在安装界面把安装路径改掉比如 D:\miniconda3。但这里有个硬性要求安装路径中不要出现中文、空格和特殊符号建议纯英文目录。另外装到 D 盘时安装选项里的 Just Me仅当前用户大概率会勾上因为 All Users所有用户写入 D 盘根目录可能会遇到权限问题。路径本身建议不要太深D:\miniconda3 这种最合适别搞成 D:\Program Files\Tools\Python\Miniconda 这种嵌套。我当时帮同事装过一次 D 盘因为路径里有中文conda 创建环境时表面看没问题但是 activate 环境后各种怪异的路径报错。排查了半天才想起来是安装路径的问题。后来我们统一成 D:\miniconda3所有问题立刻消失。2.3 安装选项里两个勾选怎么处理Miniconda 的图形安装包在安装过程中会问几个勾选框这里是最容易埋坑的地方。第一个是 Add Miniconda3 to my PATH environment variable把 Miniconda 加入系统 PATH。官方默认是不勾选的原因是你一旦勾选conda 的 Python 就会优先于系统已有的 Python可能导致别的软件异常。对于新手来说我的建议是如果这台电脑上没有其他 Python可以勾选方便你在任意终端直接使用 conda 和 python 命令如果电脑上已经装了其他 Python 或者有其他开发工具建议不勾选后续用 conda init 或者 Anaconda Prompt 来访问。第二个选项是 Register Miniconda3 as my default Python 3.x这个我也建议保持默认通常是勾选的它的作用是让系统对一些 .py 文件关联操作使用 conda 的 Python。如果电脑上已经有主力 Python 环境不想让 Miniconda 干扰就取消它。说到底这两个选项的核心原则是“别让 Miniconda 绑架系统”。你完全可以选择不勾选然后通过 conda 自带的终端或 conda init 来使用它这样后续切换和卸载都干净。3. 完整安装流程与验证3.1 官网下载与安装全程从官网下载 .exe 文件后双击开始安装。第一个界面是 Next第二步是 I Agree 同意许可协议第三步选择安装用户建议选 Just Me第四步选安装目录如果需要改 D 盘就在这一步把 C 盘路径改成 D:\miniconda3第五步就是上一节讲到的两个勾选项根据自己的情况处理最后点 Install 等待装完装完后把 Launch Miniconda3 的勾选留着或取消都行Finish 结束。这里有个很多人会忽略的点安装过程中不要同时打开别的终端窗口尤其是已经打开了 cmd 或 PowerShell 的情况。因为 Miniconda 安装时会修改用户环境变量而环境变量在系统层面是启动时读取的旧终端里读到的还是旧值。安装完立刻在新打开的终端里执行 conda 命令才能拿到最新配置。所以我一般建议安装完成后把旧终端窗口全部关掉再开一个新的。3.2 验证安装是否成功安装完成后怎么确定成功了最简单的办法是打开开始菜单找到刚生成的 Anaconda Prompt (Miniconda3)这里要注意这个终端是 conda 专用的已经为你配置好了环境变量不需要你做任何额外操作。在这个终端里输入 conda --version如果能输出类似 conda 24.x.x 的版本号说明核心安装已经完成。接着输入 python --version确认自带的 Python 版本。输入 conda info可以看到当前 conda 的安装路径、环境路径等基础信息。只要这三步里有返回结果Miniconda 就算是装好了。如果你用的是普通 cmd 或 PowerShell输入 conda 可能提示找不到命令。不用慌这不是装坏了很可能是安装时没有勾选 Add to PATH只需要执行一次 conda init 再开新窗口即可具体方法我在 6.1 小节里详细讲。3.3 环境变量与终端配置为了后续在任意终端里使用 conda我建议你在安装完成后统一执行一次环境变量初始化。在 Anaconda Prompt 里依次执行以下两条命令conda init cmd.exe conda init powershell执行后会提示你修改了配置文件然后关闭所有终端窗口重新打开 cmd 或 PowerShell。此时你会发现命令行前面多出了 (base) 字样这就表示当前已经自动进入了 base 环境conda 命令可以正常使用了。如果你不希望每次打开终端都自动进入 base 环境可以执行下面的命令关掉自动激活conda config --set auto_activate_base false等需要用时再手动执行 conda activate base 或进入其他环境。这个设置是个个人习惯问题我本人是关闭自动激活的因为绝大多数终端操作和 Python 无关进入 base 反而拖慢启动速度。4. conda 基础操作直接抄作业4.1 创建和删除虚拟环境基本的环境创建命令是这个conda create -n py311 python3.11 -y其中 -n py311 是给新环境起个名字python3.11 指定环境里的 Python 版本-y 表示遇到确认提示自动选 yes。执行后 conda 会去源里解析相关依赖并在环境目录下创建一个独立的环境。创建好以后你需要激活它conda activate py311终端前缀会从 (base) 变成 (py311)这时候你执行的 python 和 pip 都属于 py311 环境。以后要退出环境执行 conda deactivate 就可以。删除环境用这个命令conda remove -n py311 --all删除前建议确认环境里的数据是否需要备份因为这是一个不可逆的操作。我本人的习惯是给环境的命名带上项目名和 Python 版本比如 webapp_py311、ml_py310这样时间久了也不会忘记这个环境是干嘛用的。4.2 激活环境与安装包激活环境后安装 Python 包有两条路一条是 conda install一条是 pip install。我的经验是优先用 conda 装conda 装不到时再用 pip。conda 安装的典型用法conda install numpy pandas matplotlib一次可以同时装多个包conda 会统一解析依赖关系尽量保证所有包兼容。如果需要某个特定版本可以这样conda install numpy1.26.2这里要特别提醒一下不要在同一个环境里频繁混用 conda 和 pip 装同类型的包尤其是那种互相有依赖关系的大型包。因为 conda 和 pip 各有各的依赖数据库混用久了conda 可能无法再追踪一部分包的版本变化最后环境会变得很难维护。我自己的一般规则是能用 conda 装的就用 condaconda 没有的再用 pip并且尽量用 pip 装在 conda 环境里而不是系统 Python 里。4.3 环境导出与复制环境用得久了你可能需要把同样的版本配置同步到另一台电脑或者备份起来以防万一。conda 提供了两个导出命令容易混淆我分开讲清楚。导出环境名称和依赖包列表conda env export -n py311 environment.yaml这个文件包含完整的环境信息包括包的来源 channel。在另一台电脑上可以用 conda env create -f environment.yaml 恢复出一个完全一样的环境。如果只是想列出核心包列表做一个轻量备份可以这样conda list -n py311或者导出到文本文件conda list -n py311 requirements.txt但要注意requirements.txt 这个格式是为了 pip 准备的不能直接用于 conda 环境重建。如果你要复制环境而不是备份可以用 conda create -n newenv --clone py311 的方式直接克隆一个一模一样的副本这样比导出再创建快得多。4.4 快速上手命令清单日常用到的命令其实就十几个我整理成一张表放在这里方便你贴在桌面上查。目的命令查看 conda 版本conda --version查看所有环境conda env list创建环境conda create -n 环境名 python3.11 -y激活环境conda activate 环境名退出环境conda deactivate删除环境conda remove -n 环境名 --all查看当前环境已装包conda list安装包conda install 包名安装指定版本包conda install 包名版本号卸载包conda remove 包名克隆环境conda create -n 新环境名 --clone 旧环境名导出环境配置conda env export -n 环境名 environment.yaml根据配置重建环境conda env create -f environment.yaml搜索包可用版本conda search 包名这些命令在 Anaconda Prompt、cmd、PowerShell 里都是通用的。只要你在终端前缀看到 (环境名)执行的就是当前环境里的 conda。5. 国内源配置与安装提速5.1 为什么默认源慢conda 默认使用的软件仓库服务器在国外国内访问时下载速度往往慢得让人抓狂尤其是创建环境时下载 Python 解释器和一堆包一卡就是几十分钟。这种情况不是你的网络有问题而是源服务器的物理距离导致的问题。解决办法很常规把 conda 的下载源切换成国内镜像源。常见的选择有清华源、中科大源、阿里源等它们会定期同步官方仓库内容质量上可以放心。选一个稳定源之后下载速度通常能从几十 KB 提升到几 MB。这里要给个温馨提示镜像源是公共基础设施偶尔会有同步延迟碰到装包报 404 时可以等一段时间再试或者临时换另一个源。不用一直盯着一个源不放。5.2 conda 源配置方法配置 conda 源最简单的方式是直接执行命令添加 channel比如用清华源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 的 channel 列表后一条让 conda 在安装时显示包的来源方便确认有没有走镜像。添加之后以后安装包就会优先从这些 channel 去解析。也有的包不在默认 channel而在 conda-forge 里这时候你可以单独加 conda-forge 的镜像conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/如果你想直接编辑配置文件也可以打开用户目录下的 .condarc 文件Windows 下路径一般是 C:\Users\你的用户名.condarc。里面大致是这个结构channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - defaults show_channel_urls: true手动编辑和命令行添加效果一样看哪样顺手。唯一要注意的是 .condarc 文件如果不存在直接新建即可但文件编码建议用 UTF-8不要用记事本默认的带 BOM 格式否则偶尔会出现解析异常。5.3 pip 源配置方法conda 的镜像只影响 conda install 的下载如果你在环境里用 pip install它默认走的是 PyPI 官方源同样可能很慢。所以 pip 的源也需要单独配置。一条命令搞定全局设置pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple执行后pip 会把配置写入用户目录下的 pip 配置文件以后所有 pip install 都会走清华 PyPI 镜像。如果你只想某一次安装时用特定源可以不加全局配置直接pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple这个临时参数的方式适合偶尔调试不建议长期手动加。5.4 配置后的检查与恢复默认源配置完源之后怎么确认生效执行 conda info 命令看输出里的 channel URLs 部分会列出当前的 channel 列表。如果列表里出现了你添加的国内镜像源并且排在 defaults 前面说明优先走镜像源了。万一某天你想恢复官方默认源可以这样做先删除所有自定义 channel再恢复默认配置。conda config --remove-key channels这样 conda 会回到官方默认源。pip 恢复默认源则执行pip config unset global.index-url我个人很少恢复默认源因为国内环境下镜像源带来的速度提升太明显了。偶尔遇到镜像源同步延迟最多也就是加一个临时的 -c conda-forge 参数绕过去没必要来回折腾。6. 常见问题与排查速查表6.1 conda 命令找不到这是一个在 Windows 上出现频率最高的问题表现为在 cmd 或 PowerShell 里输入 conda系统提示“conda 不是内部或外部命令也不是可运行的程序或批处理文件”。主要原因无非两种安装时没有勾选 Add to PATH或者安装完成后没有重新打开终端。解决办法也很简单打开开始菜单里的 Anaconda Prompt (Miniconda3)在这个终端里执行conda init cmd.exe然后关闭所有终端窗口重新打开 cmdconda 命令就应该能用了。如果这个办法不行再检查一下安装目录是否真的位于预期位置比如 D:\miniconda3\Scripts\conda.exe 是否存在。如果你用的终端是 PowerShell那么执行 conda init powershell 而不是 cmd.exe。有一个比较隐蔽的情况你已经执行了 conda init但是打开的终端是以管理员身份运行的旧窗口。Windows 下普通用户终端和管理员终端的 PATH 环境变量是从不同级别的环境中继承的所以管理员终端可能需要额外重启一次。我遇到这种情况时统一办法是把所有终端窗口全部关闭再重新打开一般都能解决。6.2 创建环境卡在 Solving environment新建环境时卡在 Solving environment 很长时间或者直接报 Solving environment: failed这个状况在 Windows 上非常普遍。原因一般有两个一是默认源太慢解析依赖时网络延迟导致卡死二是 conda 需要从多个 channel 解析版本组合依赖关系复杂时求解时间本来就长。针对网络慢的问题按第 5 节的方法配置国内镜像源基本能缓解大部分卡顿。针对依赖求解慢的问题有几个技巧创建环境时只指定具体的 Python 版本不要一次性指定太多包或者在建好环境之后再分批次 activate 进去安装包如果你需要安装的包本身就在 conda-forge建环境时直接加 -c conda-forge让求解器只在 conda-forge 上搜索范围小了速度自然快。我还试过修改 conda 的求解器为 libmamba这是新版 conda 内置的高性能依赖求解器实际提速非常明显。执行conda install -n base conda-libmamba-solver -y conda config --set solver libmamba之后创建环境的速度会明显改善。如果你用的是比较老的 conda 版本建议先把 conda 本身升级一下。6.3 卸载 Miniconda 的干净做法Miniconda 用了一段时间想卸载重装或者决定改用其他环境方案这时候最怕的是卸载不干净残留一堆 PATH 配置和配置文件。卸载路径是先通过 Windows 的“添加或删除程序”卸载 Miniconda3这一步会移除大部分文件然后手动删除安装目录比如 C:\Users\你的用户名\miniconda3 或 D:\miniconda3接着去用户目录删除 .conda 和 .condarc以及有可能存在的 .continuum。最后打开“环境变量”设置检查用户变量和系统变量里的 PATH把包含 miniconda 或 conda 的条目删除。如果你之前执行过 conda init命令行里可能还残留初始化脚本。在卸载前最好先执行 conda init --reverse这个命令可以撤销终端配置文件里的 conda 初始化内容。我当时就是因为没做这一步卸载重装后总是遇到奇怪的 prompt 提示脚本找不到折腾了半小时才定位到是旧的初始化残留。6.4 其他高频报错与解法我把另外几个常见的 Windows 报错放在一张速查表里。现象原因解决办法安装包时提示 PackagesNotFoundError默认 channel 里没有这个包换成 conda install -c conda-forge 包名或用 pip install执行 pip install 报 externally-managed-environment系统 Python 开启了 PEP 668 管理在 conda 环境内执行避免直接装到系统 Pythonconda activate 后 python 仍是系统版本PATH 环境变量顺序不对或环境未真正激活在环境内执行 where.exe python确认环境路径排最前部分包安装后 import 报 DLL load failed底层依赖缺失或版本冲突优先用 conda 重装该包不要用 pip 覆盖打开 Anaconda Prompt 报命令语法错误终端配置文件被改动过执行 conda init cmd.exe 重新初始化再开新窗口镜像源下 404 或 HTTP 000镜像同步延迟或网络异常换另一个镜像源或临时用 conda install -c conda-forge第三行说的 where.exe 是一个非常好用的排查命令。你在 cmd 或 PowerShell 里输入 where python它会把你当前会调用的 python 路径一个个列出来。如果在激活了 conda 环境的情况下列出的第一条不是该环境的 python.exe 路径那就是 PATH 顺序有问题需要手动把环境路径调到前面或者重新检查 conda 的初始化是否配置正确。7. 进阶搭一个真实可用的 Python 工作台7.1 用 Miniconda 跑通一个数据计算脚本装完环境和包之后总要实际跑个脚本验一下整个链路。我们快速做一个数据计算的小例子新建一个环境装 numpy、pandas然后写一个简单脚本跑起来。首先创建环境并激活conda create -n demo python3.11 numpy pandas -y conda activate demo这里我直接把 numpy 和 pandas 放进了创建环境的命令里省得之后再安装。conda 会把 Python 3.11 和相关依赖一起解析安装。安装完成后激活然后随便在某个目录下新建一个 test.pyimport pandas as pd data { name: [Alice, Bob, Cathy], score: [87, 92, 95] } df pd.DataFrame(data) print(df) print(平均分:, df[score].mean())执行 python test.py如果能看到表格输出和平均分说明这个 Miniconda 环境已经可以正常工作。这一步看似简单但对于刚入门的人来说意义在于验证“环境创建、激活、装包、跑脚本”的完整链条。7.2 安装 Jupyter Notebook 并启动微软的方向是数据分析Jupyter Notebook 是记忆里很难绕过去的一个工具。在 conda 环境里安装它只需要先激活环境再执行conda activate demo conda install jupyter -y jupyter notebook执行 jupyter notebook 后终端会输出一个本地地址一般是 http://localhost:8888浏览器会自动打开你可以在网页里写 Python 代码并即时看到结果。这种方式对于做数据分析、画图表、教学演示都非常方便。有一点要提醒jupyter 装好后默认内核是当前激活的那个环境。如果你在另一个环境里也执行了 jupyter但网页里找不到那个环境的内核需要先在该环境里执行 conda install ipykernel然后 python -m ipykernel install --user --name 环境名把这个环境注册进 Jupyter 的内核列表。这个小知识能帮你省下不少时间。7.3 与 VS Code 配合写代码更顺现在很多开发者用 VS Code 写 PythonMiniconda 和 VS Code 的配合其实非常顺手。打开 VS Code安装官方 Python 扩展然后按 CtrlShiftP 打开命令面板输入 Python: Select Interpreter选择你新建的 conda 环境。VS Code 的 Python 扩展会自动识别 conda 环境通常列表中会显示 conda 环境的路径和名字。选好之后打开终端VS Code 的集成终端也会自动激活对应的 conda 环境你不需要每次手动去执行 conda activate。如果你装了 Pylance 或者 Ruff 这类语言服务扩展它们也会自动使用选中的解释器代码补全和检查都按这个环境来。我个人的工作流是VS Code 是编辑器终端里 conda 管环境Jupyter 用来做数据探索。三者各司其职整个开发链路从建环境到跑项目没有一次需要去碰系统 Python 注册表或手动改全局配置。再分享一个小习惯每个重要项目第一次跑通后我会用 conda env export -n 项目环境名 environment.yaml 导出一份环境配置跟项目代码放在一起。这样不管以后换电脑还是团队协作都能通过 conda env create -f environment.yaml 把环境原样拉回来。用了几年下来这套流程让我再也没为“代码在我机器上能跑在你机器上跑不了”这种问题发过愁。Miniconda 在 Windows 上的价值说到底也就是帮你提前把这些麻烦挡在门外。
返回列表