Miniconda安装与PyTorch环境搭建:从换源到CUDA配置的完整指南
1. 为什么我最终选择了Miniconda而不是Anaconda1.1 从一次磁盘爆满说起三年前我刚开始接触深度学习的时候第一件事就是装Anaconda。理由很简单网上教程都推荐它说是开箱即用。结果装完之后我发现整个安装目录占了将近5个G里面塞满了各种我用不到的科学计算库、Jupyter Notebook、Spyder IDE还有一堆我根本叫不上名字的包。更让我头疼的是每次用conda install装东西那个依赖解析的速度慢得让人想砸键盘有时候Solving environment能卡上十几分钟。后来一个做算法的朋友跟我说你试试Miniconda。我一开始还担心功能不全装完才发现Miniconda就是Anaconda的精简版——它只包含conda、Python和少量核心依赖安装包大概100MB左右装完也就几百兆。你需要什么包自己按需装就行了。这个逻辑其实很像手机系统Anaconda是厂商预装了一堆App的定制ROMMiniconda是干净的AOSP你想要什么自己装。从那以后我所有的开发机、服务器、甚至WSL环境全部换成了Miniconda。这篇文章就把我这些年安装Miniconda、配置虚拟环境、搭建PyTorchCUDA环境的完整流程和踩过的坑一次性讲清楚。1.2 Miniconda和Anaconda到底有什么区别很多人纠结这个问题我用一张表来说明对比维度MinicondaAnaconda安装包大小约100MB约3-5GB预装包数量仅condaPython核心依赖数百个科学计算包安装后占用约400MB-1GB约5-8GB适用场景服务器、深度学习、自定义环境数据分析入门、教学环境管理能力完全一致完全一致灵活性高按需安装低预装冗余多核心结论两者的conda命令完全一样环境管理能力没有任何区别。区别只在于预装包的多少。如果你已经明确知道自己要用PyTorch、要用CUDA、要管理多个项目的虚拟环境Miniconda是更理性的选择。1.3 谁适合看这篇内容刚入手深度学习需要在本地或服务器搭建PyTorch环境的同学被Anaconda体积和速度折磨想换轻量方案的老手需要在Linux服务器上管理多个Python项目环境的开发者遇到conda 不是内部或外部命令、run conda init before conda activate这类报错不知道怎么解决的人想搞清楚conda换源、虚拟环境迁移这些进阶操作的人不管你用的是Windows、macOS还是Ubuntu下面的流程都适用我会分别说明差异。2. 安装前的准备工作与版本选择2.1 下载渠道和版本怎么选Miniconda的官方下载地址是docs.conda.io/en/latest/miniconda.html打开之后你会看到一堆下载链接。这里有几个关键选择Python版本选择目前主流是Python 3.11和3.12。我的建议是如果你要装PyTorch先去看PyTorch官网当前稳定版支持的Python版本。截至我写这篇内容的时候PyTorch 2.x对Python 3.9-3.12都支持良好。选3.11是比较稳妥的兼容性最好。不要选太新的版本有些包的wheel还没跟上。系统架构选择Windows用户注意如果你的机器是64位现在基本都是选Miniconda3-latest-Windows-x86_64.exe。macOS用户要区分Intel芯片和Apple SiliconM系列芯片M系列选arm64版本Intel选x86_64版本。Linux用户选对应的.sh脚本。安装包类型Windows有.exe和.msi两种推荐.exe安装过程更直观。Linux和macOS是.sh脚本用bash执行。提示下载的时候如果官网速度慢可以用清华镜像站的Miniconda镜像地址在mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/找到对应版本下载即可。2.2 安装路径的讲究这一步很多人不在意但后面会带来大麻烦。Windows默认路径是C:\Users\你的用户名\miniconda3。我建议改成C:\miniconda3或者D:\miniconda3。原因有两个一是路径里不要有中文和空格二是路径短一点后面配置环境变量、写脚本的时候少很多麻烦。我见过有人装在C:\Program Files\下面结果因为空格导致各种脚本报错。Linux/macOS默认会装到~/miniconda3。这个位置一般没问题。如果你是服务器多用户环境可以装到/opt/miniconda3然后给所有用户配置权限。关键决策是否添加到PATH。Windows安装过程中会有一个选项叫Add Miniconda3 to my PATH environment variable默认是不勾选的。官方的建议是不勾选理由是避免和其他Python安装冲突。但我的实际经验是如果你机器上没有其他Python勾选上会省很多事。如果不勾选你后面就得用Anaconda Prompt这个专用终端或者在普通终端里手动初始化。Linux/macOS安装脚本最后会问你是否运行conda init选yes。这一步会自动帮你把conda加到shell配置里。2.3 安装过程实录Windows安装步骤双击下载的.exe文件点击Next同意协议选择Just Me除非你是多用户服务器修改安装路径为C:\miniconda3在Advanced Options页面勾选Add Miniconda3 to my PATH environment variable如果你机器上没有其他Python同时勾选Register Miniconda3 as my default Python点击Install等待完成Linux安装步骤# 下载 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 执行安装 bash Miniconda3-latest-Linux-x86_64.sh # 安装过程中按回车阅读协议输入yes同意 # 询问安装路径时直接回车用默认的~/miniconda3或输入自定义路径 # 最后询问是否conda init输入yes安装完成后关闭当前终端重新打开一个让配置生效。然后输入conda --version如果能看到版本号说明安装成功。macOS安装步骤和Linux基本一样下载对应的.sh文件执行即可。M系列芯片注意下载arm64版本。3. 安装后的第一件事换源和初始化3.1 为什么必须换源conda默认的包仓库在国外国内访问速度很不稳定。我实测过不换源的情况下conda install pytorch有时候能卡半小时甚至直接超时失败。换到国内镜像源之后速度能提升十几倍。常用的国内镜像源有清华源、阿里源、中科大源。我个人一直用清华源稳定性最好。3.2 换源的具体操作方法一命令行配置推荐# 添加清华源 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/pytorch/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ # 设置搜索时显示通道地址 conda config --set show_channel_urls yes方法二直接编辑配置文件配置文件在~/.condarcLinux/macOS或C:\Users\用户名\.condarcWindows。直接写入以下内容channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud配置完成后运行conda clean -i清除索引缓存让新源生效。注意换源之后如果遇到某个包找不到可能是镜像同步延迟。这时候可以临时用-c参数指定官方源装比如conda install -c pytorch pytorch。3.3 conda init到底做了什么很多人遇到condaerror: run conda init before conda activate这个报错就是因为没搞懂conda init的作用。简单说conda init会修改你的shell配置文件bash是~/.bashrczsh是~/.zshrcWindows是注册表里的环境变量在里面加一段初始化脚本。这段脚本的作用是每次你打开终端它会自动加载conda的基础环境并注册conda activate这个命令。如果你没运行过conda init直接敲conda activate myenvshell不认识这个命令就会报错。解决方法conda init bash # 如果你用bash conda init zsh # 如果你用zsh然后关闭终端重新打开。Windows下如果用的是PowerShell运行conda init powershell。一个常见的坑运行完conda init之后每次打开终端都会自动激活base环境终端提示符前面会多一个(base)。有些人觉得烦可以运行conda config --set auto_activate_base false关掉自动激活。需要的时候手动conda activate base就行。4. 虚拟环境管理conda的核心价值4.1 为什么要用虚拟环境我见过太多新手把所有包都装在base环境里结果项目A需要PyTorch 1.13项目B需要PyTorch 2.0两个项目的依赖打架最后环境彻底崩溃只能重装。虚拟环境就是给每个项目一个独立的房间每个房间里的Python版本、包版本互不干扰。conda在这方面做得比venv更好因为它不仅能管理Python包还能管理非Python的依赖比如CUDA工具包、编译器这些。4.2 创建和管理虚拟环境的常用命令# 创建环境指定Python版本 conda create -n myenv python3.11 # 创建环境时同时装包 conda create -n pytorch_env python3.11 pytorch torchvision -c pytorch # 激活环境 conda activate myenv # 退出环境 conda deactivate # 查看所有环境 conda env list # 删除环境 conda remove -n myenv --all # 克隆环境做实验前备份用 conda create -n myenv_backup --clone myenv关于conda create -n慢的问题这是高频吐槽点。慢的原因主要是依赖解析Solving environment耗时。几个优化手段换源前面已经说了用conda create -n myenv python3.11 --no-default-packages不装默认包考虑用mamba替代conda的解析器mamba是用C写的解析速度快很多。安装方法conda install -n base -c conda-forge mamba之后把conda命令换成mamba即可用法完全一样。4.3 环境导出与迁移这是团队协作和换机器时的刚需。# 导出环境配置 conda env export environment.yml # 从配置文件重建环境 conda env create -f environment.yml但conda env export会导出所有依赖的精确版本包括一些平台相关的包跨平台迁移时容易出问题。我的做法是手动维护一个精简的requirements.txt只写核心包python3.11 pytorch2.1.0 torchvision0.16.0 numpy pandas matplotlib然后用conda create -n newenv --file requirements.txt创建。这样跨平台兼容性更好。实操心得如果要把整个环境目录直接拷贝到另一台机器理论上是可行的但要求两台机器的路径完全一致且系统版本接近。我试过几次成功率大概一半一半不推荐作为常规方案。老老实实用yml文件重建更靠谱。5. PyTorch CUDA环境搭建实战5.1 先搞清楚CUDA、显卡驱动、PyTorch的关系这是新手最容易懵的地方。我用一个类比来解释显卡驱动相当于你电脑的操作系统它决定了你的显卡能支持到哪个CUDA版本。驱动版本越高支持的CUDA版本上限越高。CUDA Toolkit相当于开发工具包PyTorch需要它来调用GPU。但注意PyTorch自带了运行时的CUDA库你不需要单独安装完整的CUDA Toolkit。PyTorch深度学习框架它编译时绑定了一个特定的CUDA版本。关键结论用conda装PyTorch时conda会自动帮你装好对应版本的CUDA运行时库你不需要自己去装CUDA Toolkit。这一点很多人搞错了花大量时间在装CUDA上结果发现根本不需要。那什么时候需要单独装CUDA Toolkit当你需要编译自定义的CUDA算子、或者用nvcc编译代码的时候。日常跑PyTorch训练和推理conda装的cudatoolkit就够了。5.2 查看显卡驱动支持的CUDA版本nvidia-smi输出右上角会显示CUDA Version: 12.2之类的信息。这个数字表示你的驱动最高支持到CUDA 12.2。你可以装比这个低的版本但不能装比它高的。比如显示12.2你可以装CUDA 11.8、12.1但不能装12.3。5.3 用conda安装PyTorch的正确姿势首先去PyTorch官网pytorch.org在Get Started页面选择你的配置PyTorch版本、操作系统、包管理器选conda、语言Python、计算平台CUDA版本。官网会生成一行命令比如conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia注意如果你已经换了清华源这里的-c pytorch -c nvidia可能会和镜像源冲突。我的做法是去掉-c pytorch -c nvidia直接用配置好的镜像源装conda install pytorch torchvision torchaudio pytorch-cuda11.8如果镜像源里没有对应的包再临时加-c参数。关于conda install -c nvidia cuda-toolkit11.8太慢的问题nvidia的channel在国内访问确实慢。解决方案是换用清华的nvidia镜像或者直接用pip装PyTorchpip的PyTorch wheel里也自带了CUDA运行时。5.4 验证安装是否成功装完之后一定要验证。写一个简单的测试脚本import torch # 检查PyTorch版本 print(PyTorch version:, torch.__version__) # 检查CUDA是否可用 print(CUDA available:, torch.cuda.is_available()) # 检查CUDA版本 print(CUDA version:, torch.version.cuda) # 检查显卡数量 print(GPU count:, torch.cuda.device_count()) # 检查显卡名称 if torch.cuda.is_available(): print(GPU name:, torch.cuda.get_device_name(0)) # 做一个简单的GPU运算测试 x torch.randn(1000, 1000).cuda() y torch.randn(1000, 1000).cuda() z torch.mm(x, y) print(GPU matrix multiplication test passed, result shape:, z.shape)如果torch.cuda.is_available()返回True说明环境配置成功。5.5 WSL环境下的特殊处理现在很多人在WSL2里跑深度学习因为Windows原生环境的CUDA支持有时候不太稳定。WSL下的流程和Linux基本一样但有几个注意点不要在WSL里装显卡驱动。WSL用的是Windows主机的驱动你只需要在Windows里装好驱动就行。WSL里装CUDA Toolkit如果你确实需要nvcc可以装但日常PyTorch不需要。7900XTX等AMD显卡PyTorch对AMD显卡的支持通过ROCm配置方式和CUDA不同。WSL下AMD显卡的支持目前还有限建议直接用Linux原生系统。6. 常见报错与排查速查表6.1 高频报错汇总报错信息原因解决方法conda 不是内部或外部命令安装时没勾选添加到PATH或没运行conda init重新运行安装程序勾选PATH或手动添加环境变量run conda init before conda activateshell没有初始化conda运行conda init bash或对应shell重启终端Solving environment: failed依赖冲突或源配置有问题换源或用mamba或指定具体版本PackagesNotFoundError镜像源里没有这个包临时加-c参数指定官方源CondaHTTPError: HTTP 000网络问题或源地址失效检查网络更换镜像源torch.cuda.is_available()返回FalseCUDA版本不匹配或驱动问题检查nvidia-smi重装对应CUDA版本的PyTorchconda create -n 慢依赖解析耗时用mamba或加--no-default-packages6.2 几个我踩过的坑坑一PyCharm里用conda虚拟环境的Python解释器报错这个在热词里也出现了。原因是PyCharm默认可能找不到conda环境的python.exe。解决方法在PyCharm的Settings - Project - Python Interpreter里选择Add Interpreter - Conda Environment - Existing environment然后手动指向miniconda3/envs/你的环境名/python.exe。不要选New environment那个有时候会出问题。坑二Ubuntu下CUDA安装指令装不了热词里有ubuntu cuda安装指令安装不了。常见原因是没有先装显卡驱动系统内核版本和CUDA不兼容之前装过CUDA残留文件冲突我的建议是如果你只是跑PyTorch根本不需要单独装CUDA Toolkit用conda装PyTorch时自带的cudatoolkit就够了。这样能避开90%的CUDA安装问题。坑三环境迁移后路径不对用conda env export导出的yml文件里如果有prefix: /home/xxx/miniconda3/envs/myenv这一行迁移到别的机器上会报错。解决方法是手动删掉这一行或者用conda env export --no-builds导出。坑四base环境越来越臃肿很多人习惯在base环境里装东西时间长了base环境一堆包启动变慢还容易冲突。我的原则是base环境只装conda、mamba、pip这些基础工具所有项目相关的包都装在独立环境里。6.3 环境彻底清理和重装如果环境实在搞坏了别硬修直接删了重建更快# 删除环境 conda remove -n bad_env --all # 清理缓存能释放不少磁盘空间 conda clean --all # 重建 conda create -n new_env python3.11如果连conda本身都坏了直接删掉miniconda3目录重新装一遍。这也是Miniconda的优势——重装成本低不像Anaconda要下好几个G。7. 一些提升效率的进阶技巧7.1 用mamba加速依赖解析前面提过mamba这里再强调一下。装完mamba之后你可以直接把所有conda命令替换成mamba速度提升非常明显。我实测同一个环境创建conda要3分钟mamba只要20秒。conda install -n base -c conda-forge mamba mamba create -n fast_env python3.11 pytorch torchvision7.2 pip和conda混用的注意事项conda和pip混用是很多问题的根源。原则是能用conda装的就用conda装conda没有的再用pip。混用的时候先用conda装完所有能装的最后再用pip装剩下的。不要交替使用。如果pip装完之后conda环境出问题了可以试试conda install --revision回滚到之前的状态。7.3 配置Jupyter Notebook使用虚拟环境conda activate myenv conda install ipykernel python -m ipykernel install --user --namemyenv --display-namePython (myenv)这样在Jupyter里就能切换到你的虚拟环境了。7.4 定期备份环境配置我习惯每个项目稳定运行之后导出一份环境配置存到项目目录里conda env export --no-builds environment.yml这样换机器或者环境坏了能快速恢复。--no-builds参数去掉build号跨平台兼容性更好。8. 关于Miniconda安装这件事我最后想说的从Anaconda换到Miniconda这几年我最大的感受是工具应该服务于你的需求而不是反过来。Anaconda预装那么多包看起来省事实际上大部分你根本用不到还拖慢了整个环境。Miniconda的哲学是按需索取你需要什么装什么环境干净、可控、可复现。安装Miniconda本身其实很简单十分钟就能搞定。真正花时间的是理解conda的环境管理逻辑、搞清楚CUDA和PyTorch的版本对应关系、以及遇到报错时知道去哪里排查。这篇内容里我尽量把这些年踩过的坑都写出来了希望能帮你少走一些弯路。如果你在安装过程中遇到了这篇内容没覆盖到的问题我的建议是先看报错信息的关键词然后去搜这个关键词大概率有人遇到过同样的问题。conda的报错信息其实挺直白的耐心读一读往往能自己找到答案。最后分享一个我个人的习惯每次搭建新环境之前先在纸上或者备忘录里写清楚这个环境要装什么、Python版本是多少、PyTorch要哪个CUDA版本。想清楚了再动手比装到一半发现版本不对再重来要高效得多。