ARTICLE DETAIL

资讯详情

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

Miniconda新手完全教程:安装、换源、虚拟环境与PyTorch实战

Miniconda新手完全教程:安装、换源、虚拟环境与PyTorch实战 开篇先说结论miniconda 这个东西只要你碰 Python迟早会用上。它是 Anaconda 的轻量版只带 conda 包管理器、Python 和一个极小的默认环境剩下的库按需装——相比 Anaconda 那个上来就塞几百个包的庞然大物miniconda 清爽得多也省硬盘。这篇教程面对的读者很明确刚接触 Python、被各种环境变量和依赖搞得头大、想彻底搞明白“我这台机器上到底装了个啥”的新手。我会把从官网下载、命令行安装、配置镜像源、创建虚拟环境到和 PyCharm 联动、装 PyTorch 踩坑的完整过程全写出来。1. 安装前的思考为什么选 miniconda 而不是直接装 Python 或 Anaconda1.1 Python 环境管理的痛点到底在哪先说直白点单独装 Python 是一件后患无穷的事。默认情况下你用 pip install 装进去的所有第三方库会统一塞到系统 Python 的 site-packages 目录A 项目需要 numpy 1.xB 项目需要 numpy 2.x两个版本在同一个环境里直接互相覆盖API 变了代码就跑不起来。更麻烦的是有些库还要依赖系统级的编译工具链装到一半报错、缺依赖、提示找不到 MSVC 或 GCC新手基本就卡死在这一步。miniconda 的核心价值就是“隔离”两个字。conda 会为你创建完全独立的虚拟环境每个环境拥有自己的 Python 解释器、自己的包目录、自己的 PATH 优先级。你可以在一个环境里跑 Python 3.8 旧版依赖另一个环境里跑 Python 3.11 新版依赖彼此互不干扰。这个机制背后是因为 conda 不仅管 Python 包还管非 Python 的原生库——比如 CUDA 相关的驱动依赖、MKL 数学库、OpenSSL 等它能帮你保证二进制层面的兼容性。1.2 和 Anaconda 的差异到底在哪Anaconda 默认装完就有 conda、Python 和 250 多个高频数据科学包方便是真方便但代价也很现实安装包接近 3GB装完后占磁盘 10GB 以上启动 Jupyter 时一堆预装包要加载对配置一般的电脑是个负担。miniconda 只有约 80MB 的安装包装完只占 500MB 左右然后你需要哪个包就装哪个包。你可以理解为 Anaconda 是一个“全家桶搬家公司”miniconda 是一个“只给你毛坯房 通水通电的基石”家具自己选。实际用下来绝大多数人的需求装 numpy、pandas、pytorch、jupyter用 miniconda 完全够还能避免 Anaconda 默认 channel 里某些预装版本过旧带来的兼容坑。最重要的是两者在 conda 命令层面完全一致教程通用。1.3 什么时候你就需要 miniconda 了适合使用 miniconda 的场景很明确你打算深入学习数据科学 / 机器学习需要频繁试验不同的 Python 版本和依赖组合你需要在不同项目间切换而不想把系统环境搅成一锅粥你的开发机硬盘空间有限装 Anaconda 会有压力。如果你只是写一个几十行的脚本、只用到标准库那我建议你也可以装 miniconda——反正也不亏将来总用的上。2. 下载与安装实操Windows、Linux、macOS 三平台全覆盖2.1 官网下载的正确姿势首先是下载地址直接搜 miniconda 官网认准 conda.io 官方域名。页面往下拉会看到 “Latest Miniconda Installer Links”里面按 Python 版本和操作系统分好了一堆安装包。Windows选 Miniconda3 Windows 64-bit.exe 结尾那个macOSIntel 芯片选 x86_64 版Apple SiliconM1/M2/M3选 arm64 版这个选错会很麻烦Linuxx86_64 是绝大多数服务器和 PC 的架构树莓派等 ARM 设备要选 aarch64注意下载前确认你机器的架构。Windows 可以在“设置→系统→关于”里看系统类型Linux/macOS 在终端里运行uname -m输出 x86_64 是 64 位 Intel/AMD输出 aarch64 是 ARM 架构。下错架构的安装包在安装阶段就会报错白折腾。2.2 Windows 安装全流程Windows 的安装包是一个图形界面的 exe双击运行安装逻辑和普通软件差不多但有三个地方容易踩坑。第一步选择安装路径时不要装在默认的 C 盘用户目录下建议直接装到C:\miniconda3或者D:\miniconda3。为什么因为用户目录路径往往带有中文用户名或者空格这会导致后续某些库尤其是涉及 C 编译的库在找路径时报编码错误。第二步高级安装选项里有两个复选框Add Miniconda3 to my PATH environment variable和Register Miniconda3 as my default Python。网上很多教程让你两个都勾上但我的建议很明确第一个不要勾第二个也不要勾。原因后面专门说。第三步等安装进度条跑完就完成了。装完不要急着打开 Python先从开始菜单找到 “Anaconda Prompt (miniconda3)” 并打开——这是一个已经配置好环境的命令行窗口在里面输入conda --version能看到版本号说明装对了。2.3 Linux 安装全流程Linux 下安装要简单直白得多核心就是下载脚本然后执行。打开终端依次执行wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh脚本会先显示一个使用协议按 Enter 快速翻页然后问你是否接受协议输入 yes 回车。接下来会询问安装路径默认是在~/miniconda3我建议就用默认路径不要改到/opt或/usr/local。因为 conda 在后续使用中要频繁写自己的目录如果没有 sudo 权限装到系统目录到处都是权限报错。安装结束后脚本会问Do you wish the installer to initialize Miniconda3 in your shell?这里选 yes。这个操作会在你 shell 的配置文件中写入一段 conda init 的代码让每次打开终端都自动进入 base 环境。然后你需要重启终端或者运行source ~/.bashrc来让配置生效。2.4 macOS 安装全流程macOS 的安装有两种方式图形界面的 pkg 安装包或命令行脚本。pkg 那种双击安装基本没有需要注意的装完在“应用程序/实用工具”里能找到终端直接输入conda命令就能用。但这里有个隐患——pkg 安装会把 conda 放到/opt/anaconda3或/opt/miniconda3而新版 macOS 对系统目录有 SIP 保护后续有些库要写这个目录时会遇到权限问题。所以我更推荐用命令行方式和 Linux 完全一致wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh bash Miniconda3-latest-MacOSX-arm64.sh注意 Apple Silicon 的机器要选 arm64 版脚本Intel 老机器选 x86_64 版。用uname -m确认架构再下载。macOS 上还要注意首次打开终端时系统会提示 “无法打开因为无法验证开发者”这时候要前往“系统设置→隐私与安全性”在“安全性”部分点“仍要打开”。2.5 安装完成后必须验证的三件事装完不管哪个平台先做三遍确认把环境根基打牢conda --version # 确认 conda 本体安装成功 python --version # 确认默认 Python 版本注意这里应该指向 miniconda which python # Windows 上换成 where python看解释器路径which python这一步特别重要。如果输出/usr/bin/python或者 Windows 上显示C:\Windows\System32\python.exe说明 conda 还没接管终端里的 Python 命令很可能是 PATH 没配好下面第 3 节详细处理。3. 环境变量与 shell 初始化理解 conda 的工作方式3.1 为什么“不推荐把 conda 加进系统 PATH”回到刚才 Windows 安装时那两个复选框。常规软件都会告诉你要“Add to PATH”但 conda 官方安装器的默认做法是不把 conda 写入系统 PATH而是通过一个叫 conda init 的机制在你打开终端时动态加载。为什么这么设计因为系统 PATH 是全局的如果你把 conda 的 Python 注册成默认 Python可能导致系统自带的某些工具比如 Windows 的软件管理器、macOS 上的系统脚本import 异常。而 conda init 的方式只对你自己的 shell 生效登录哪个用户就用哪个用户的 conda互不污染出问题也方便回退。新版安装器问你Do you wish the installer to initialize Miniconda3就是在做这个事选 yes 就是让你免去手动改 PATH 的麻烦。3.2 conda init 到底改了什么conda init 做的事情很透明它在你的 shell 配置文件Linux/macOS 上是~/.bashrc或~/.zshrcWindows 上是在用户目录下的Documents\conda相关配置里写了一段代码块。你打开终端时这段代码会执行把你的 base 环境“激活”。想知道自己机器上配没配上直接看配置文件末尾有没有这段# conda initialize # !! Contents within this block are managed by conda init !! __conda_setup$(/home/yourname/miniconda3/bin/conda shell.bash hook 2 /dev/null) # conda initialize 如果你用的不是 bash 而是 zshmacOS 默认配置写在~/.zshrc里内容类似只是 shell 名变成 zsh。万一你安装时手抖选了 no也可以随时补上conda init bash # 或 conda init zsh3.3 手动加入 PATH 的替代方案有些场景确实没法通过 conda init 生效比如某些 CI 脚本、Docker 容器或者远程服务器上非交互式终端。这时候只能手动把 conda 的 bin 目录加进 PATH。Linux/macOS 上在~/.bashrc末尾加一行export PATH/home/yourname/miniconda3/bin:$PATHWindows 上则是“系统属性→环境变量→Path→编辑→新建”把C:\miniconda3和C:\miniconda3\Scripts加进去。但这只是让 conda 命令可用它不会自动激活 base 环境属于“能用但不够好用”的状态。所以正常本地开发优先用 conda init 而不是手动改 PATH。4. 换源与基础配置不换源你会等到怀疑人生4.1 conda 默认源为什么慢conda 默认从 repo.anaconda.com 下载包这个服务器在国外国内访问速度不稳定经常遇到几十 KB/s 的下载速度或者下到一半连接超时。新手第一次装包往往就是卡在Solving environment或者Downloading这一步耐心被反复磨没。解决办法是换用国内镜像源这里我以清华 TUNA 镜像为例。执行以下命令把 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 --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes这三条命令分别添加了三个 channelmain 是官方主包库free 是历史遗留的旧包库conda-forge 是社区维护的扩展库覆盖率很全。show_channel_urls设为 yes 的作用是让 conda 在安装包时显示包的来源 channel方便排查问题。4.2 pip 源也要一起换conda 源解决的是用 conda install 安装时的下载速度但实际开发中你会经常用到 pip install。pip 默认源 pypi.org 一样在国外同样要换。执行pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这会在~/.pip/pip.confWindows 在%APPDATA%\pip\pip.ini写入配置。换完之后pip install 的速度可能从“分钟起步”变成“秒级”。一个常被忽略的细节是pip 配置里还可以加 trusted-host但新版 pip 默认信任 https所以一般不用额外加。4.3 配置 OpenSSL 证书坑点在 Linux 服务器上有时候用 HTTPS 镜像源会碰到CERTIFICATE_VERIFY_FAILED错误。这不是源的问题而是系统缺少 conda 自带的证书链。一个快速验证办法conda config --set ssl_verify false不过这是临时方案不建议长期关闭证书校验。更规范的解决是安装ca-certificates包并在环境变量里指定证书路径。实际操作中绝大多数人根本遇不到这个问题遇到的话优先检查是不是公司内网有 HTTPS 拦截代理导致的。5. 虚拟环境创建与管理这是 conda 最值钱的功能5.1 为什么必须建虚拟环境很多新手拿到 conda 就一直在 base 环境里装包这是最大的错误。base 环境是 conda 自己管理的地盘一旦你往里面装了一堆包将来某个包升级时碰上依赖冲突conda 解决依赖时会反复尝试不同的版本组合耗时极长甚至会把 base 环境搞崩。虚拟环境的优势是每建立一个新环境就等于开辟一块“干净的地盘”。举个例子我想同时维护两个项目project-A 需要 Python 3.8 TensorFlow 2.4project-B 需要 Python 3.10 PyTorch 2.0。如果放在同一个环境里这两个深度学习框架的底层依赖CUDA 版本、protobuf 版本直接冲突根本没法共存。但拆成两个环境就毫无压力。5.2 创建、激活、退出、删除全套命令创建虚拟环境的命令很简单conda create -n project_name python3.10-n后面的名字是你给环境起的名字命名规则建议用项目名或者项目简写别用中文、别用空格。后面的python3.10是指定解释器版本conda 会去下载对应版本的 Python 解释器并建立独立环境。创建完之后激活conda activate project_name激活成功后命令行提示符最前面会出现(project_name)这时候你输入的python、pip都来自这个环境。退出环境conda deactivate删除环境conda env remove -n project_name需要查当前有哪些环境conda env list # 或者 conda info --envs5.3 在虚拟环境里装包的正确姿势激活环境后装包有两种选择要分清conda install numpy pandas # 方式一 pip install numpy pandas # 方式二优先顺序是能用 conda install 就用 conda install。因为 conda 不仅管理 Python 包还会解析并安装二进制依赖比如 MKL、OpenMP这些底层库通过 pip 可能装不上或者装错版本。但 conda 的包库覆盖没有 pip 全某些小众包或者最新版本在 conda 里找不到那就只能 pip。这里有个易混点你在 base 环境里直接pip install可能会把包装到 base然后在另一个环境里发现用不了。因为每个环境的 pip 是独立的激活哪个环境就用哪个环境的 pip不存在“全局共享”这回事。所以要养成习惯激活环境后先确认which pip是否指向当前环境再装包。5.4 复制与导出环境当你搭建好一个稳定的环境时强烈建议导出环境配置作为可复现的“配方”保存下来conda env export environment.yml这个文件里不仅有你显式 install 的包还有所有依赖的完整版本信息方便你换机器或给同事时一键重建conda env create -f environment.yml更简洁的导出方式是只记录顶层依赖conda env export --from-history environment.yml两者适用场景不同前者适合精确复现后者适合迁移到其他平台因为架构不同的机器上某些精确版本可能不存在。6. 与 PyCharm 联动写完代码不报错才是重点6.1 PyCharm 里配置 conda 环境的原理PyCharm 本身不带 Python 解释器它只是调用你机器上已存在的解释器来运行代码。所以你装了 miniconda 之后要想让 PyCharm 使用你创建的虚拟环境本质就是告诉 PyCharm“去哪个路径找这个环境的 python.exe/python 可执行文件”。搞清楚这一点你就能明白为什么 PyCharm 里要选解释器路径而不是选 conda 命令本身。拿到一个已有项目全局流程是打开 File → Settings → Project → Python Interpreter → 点击齿轮 → Add Interpreter → 选 Conda Environment。在弹出的窗口里有几个选项Use existing environment下拉选择你已经创建好的 conda 环境或者Create new environment指定 conda 路径和环境名字新建一个还可以Conda executable填conda的可执行文件路径。实际上只要Conda executable填对PyCharm 能自动识别你机器上所有的 conda 环境下拉列表里就能选。6.2 PyCharm 终端也自动激活环境PyCharm 内置 Terminal 终端默认不会自动激活 conda 环境需要手动激活或者配置一下让终端启动时自动加载 conda。Windows 上最好把 PyCharm 的 Terminal 设置从默认的powershell.exe改成cmd.exe因为 conda 对 cmd 的 init 支持最稳定。具体在 File → Settings → Tools → Terminal → Shell path 里修改。Linux/macOS 上因为 shell 配置文件.bashrc/.zshrc在终端启动时会被自动加载而 conda init 生成的初始化代码也在里面所以 PyCharm 的 Terminal 打开后 conda 自动可用无需额外配置。6.3 树莓派 / ARM 架构用户的 PyCharm 注意点如果你的 PyCharm 跑在树莓派aarch64上注意自己装的是 miniforgeARM 版 conda而不是官方 miniconda。PyCharm 的 Conda Environment 设置里Conda executable要改成你实际安装的 conda 路径通常位于~/miniforge3/bin/conda。树莓派用户还有一个坑很多预编译包只在 conda-forge channel 里提供PyCharm 里创建环境时默认 channel 可能没配 conda-forge建议在命令行把 conda-forge 加进.condarc再创建环境否则会出现“PackageNotFoundError”找不到包的情况。7. 安装 PyTorch 完整实战处理器与显卡版本怎么选7.1 先搞清你的 CPU 是否支持 AVX 指令这是很多人忽略的一点PyTorch 官方包要求 CPU 至少支持 AVX 指令集。如果你的 CPU 太老比如某些低功耗的赛扬装完 torch 之后 import 会直接报Illegal instruction (core dumped)这个错误极其劝退。检查方法在 Linux 上运行grep avx /proc/cpuinfo如果输出为空说明 CPU 不支持 AVX那就只能找第三方编译的无 AVX 版本或者换一台机器。Windows 上可以用 CPU-Z 工具查看指令集支持情况。绝大多数 Intel 酷睿和 AMD 锐龙都支持不用太过担心但树莓派用户需要注意——ARM 版 PyTorch 的预编译包对指令集要求相对低一些通常没问题。7.2 安装 CPU 版最省心的路径如果你暂时不搞深度学习训练只想跑跑神经网络的前向推理或者做课题作业CPU 版完全够了。命令特别简单conda activate project_name conda install pytorch torchvision torchaudio cpuonly -c pytorch这个命令会从 PyTorch 官方 channel 拉取 CPU 版三个核心包。cpuonly是一个标记包告诉 conda 不要拉取带 CUDA 的版本。如果 conda 官方源速度太慢也可以直接用 pippip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpupip 安装的 PyTorch 二进制是自带依赖的 whl 包省心程度不相上下。唯一区别是 conda 安装的 PyTorch 可以和 conda 的 MKL 库自动整合CPU 推理速度可能会快一点但差距在日常使用中感知不强。7.3 安装 GPU 版先把 CUDA 环境理顺GPU 版最大的坑不在 PyTorch而在 CUDA 驱动和 cuDNN 的版本匹配。装之前要先搞清楚三件事你的显卡支持哪种 CUDA 版本。用nvidia-smi命令查看驱动支持的最高 CUDA 版本。比如输出显示CUDA Version: 12.4那你可以装 cu121 或 cu124 的 PyTorch 版本。conda 环境里装的是哪个 CUDA 运行库。PyTorch 的 GPU 版通常不自带 CUDA 驱动而是依赖系统驱动 运行时库装命令时要选匹配的 CUDA 版本。版本不匹配最常见的表现是torch.cuda.is_available()返回 False或者 import torch 时报CUDA error: no kernel image is available for execution on the device。一个稳妥的安装命令conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia这里是让 conda 从 PyTorch 和 NVIDIA 官方 channel 分别拉取对应版本。如果在国内这两条 channel 的下载速度可能不理想建议先配好 PyTorch 的镜像源。清华源有 pytorch 的镜像conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/nvidia/安装后验证 GPU 是否可用import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))输出 True 和显卡型号就说明一切正常。7.4 conda 找不到包时先升级 conda装 PyTorch 时新手经常会遇到PackagesNotFoundError这通常不是包的锅而是你的 conda 版本太老不能正确解析新版 PyTorch 的元数据。升级 conda 基本能解决conda update conda conda update --all日常使用中建议每隔几个月跑一次这两条命令。但要注意conda update --all会把环境里的包全部升级到兼容的最新版本有可能破坏环境所以只建议在 base 环境里执行虚拟环境里慎用。8. 常见问题与排查技巧实录8.1 conda 命令找不到 / 提示不是内部或外部命令这个问题的根源是 PATH 没配置好。Linux/macOS 上先确认安装脚本是否执行了 conda init没执行就运行conda init bash。Windows 上要检查环境变量里的路径是否包含 miniconda 安装目录或者直接去开始菜单找 “Anaconda Prompt”那个窗口自带路径配置。注意 Windows 的 PowerShell 在conda activate之前可能需要先运行conda init powershell来初始化支持模块。8.2 Solving environment 卡住不动Solving environment是 conda 在解析依赖关系正常情况下几十秒到几分钟不等。如果你的网络比较慢或者 channel 里刚好有大量旧版本需要比较这个过程可能拖到 10 分钟以上让人以为死机了。两个对策第一确保已经换了国内镜像源这一步能大幅减少解析时的高延迟请求第二装包时指定版本别让 conda 在“选哪个版本最合适”上过于纠结。比如你要装 pandas明确写conda install pandas2.0而不是conda install pandas解析速度会有明显提升。另外一个终极方案尽量减少conda install的使用改用 pip。pip 的解析策略简单粗暴不回溯那么多版本速度确实快很多。但代价是可能错过 conda 处理的二进制依赖权衡着用。8.3 如何彻底卸载 miniconda装多了总会有想重装的一天。卸载方式很简单直接删除 miniconda3 文件夹然后清理 shell 配置文件中 conda init 添加的代码块再手动删除用户目录下.conda和.condarc文件。Windows 上是去“控制面板→程序卸载”然后删除 C 盘残留目录。但要注意已经创建的环境全部都会丢失所以卸载前先导出environment.yml备份。8.4 conda 装包太慢还能怎么加速换完国内源后发现依然慢一种可能是你同时配置了多个 source 的 channelconda 会按顺序访问直到找到包遇到第一个挂掉或超时的源就会白等很长时间。检查一下你当前的 channel 配置conda config --show channels理想状态下 channels 里应该只保留镜像源地址和 conda-forge不要把默认官方源和镜像源混在一起。如果某个镜像源不稳定果断删掉conda config --remove channels https://repo.anaconda.com/pkgs/main/8.5 Python 3.dev 相关的问题辨析有一个容易被名字误导的坑miniconda 自带的是完整的 Python 解释器不需要额外安装 python3-dev 之类的开发包。python3-dev是 Ubuntu/Debian 系统为了编译 C 扩展而提供的头文件和静态库包它和 conda 里的 Python 没有直接关系。如果你在 conda 环境里编译某个 Python 库时报缺失 Python.h答案不是去 apt 装 python3-dev而是检查你是否安装了对应版本的 conda 包python或者用 conda 安装编译链工具conda install compilers cmake9. 我踩过的一些坑和最后的建议9.1 别让 conda 和系统 Python 混着用我见过太多新手在 conda 环境的终端里sudo pip install结果包装到了 /usr/lib/python3 下面和 conda 环境完全没关系。记住一个原则终端里敲 python 之前先看一眼提示符前面有没有环境名确保自己在正确的环境里操作。9.2 小技巧给 conda 起一些快捷别名如果你常用 zsh 或 bash建议在配置里加两行别名输入效率提升很明显alias cactconda activate alias cdeactconda deactivate alias cenvconda env list有了这三个别名日常切换环境的命令短了一大截你也会更愿意用虚拟环境而不是偷懒全怼在 base 里。9.3 我的最终建议从装好的第一分钟就开始用虚拟环境不要觉得“我现在项目少用 base 就行”。从我接触的无数新手案例来看环境混乱都是这么开始的——最开始一个两个包没事半年后各种版本冲突只能删光重装。miniconda 存在的意义就是让你从一开始就养成好习惯每个项目一个环境干净利落。这篇教程写到这希望你装完 miniconda 后不再被环境问题折磨。如果还有疑问拿着conda --version、conda env list和报错信息去搜索引擎基本都能找到答案。
返回列表