ARTICLE DETAIL

资讯详情

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

WSL安装Miniconda3全攻略:从环境配置到Python虚拟环境管理

WSL安装Miniconda3全攻略:从环境配置到Python虚拟环境管理 1. 为什么非要在WSL里装Miniconda3先说清楚再动手如果你手上是一台Windows电脑又天天被各种教程里的Linux命令、conda环境搞得头皮发麻那这篇文章就是写给你看的。把WSL和Miniconda3放到一起本质上就是给Windows装了一个轻量级Linux子系统然后在里面搭一套干净的Python环境管理工具。我用了几年下来最大的感受就是省心。不需要装双系统来回切换不用开虚拟机吃内存更不用因为Windows上某些库编译不过去而干瞪眼。先说WSL到底解决什么问题。以前想在Windows上跑Linux生态的东西无非两条路装一个Ubuntu虚拟机或者干脆给硬盘分个区装双系统。前者太笨重开个虚拟机占好几个G内存磁盘占用更是夸张后者太折腾切换系统还要重启时间一长就懒得动了。WSL直接把一个完整的Linux用户态环境跑在Windows里面启动一个终端只要一两秒内存按需分配硬盘文件还能互相访问。你在WSL里装Miniconda3等于拥有了一整套Linux下最常用的Python环境管理方案但日常还是在Windows桌面里工作。再说为什么选Miniconda3而不是Anaconda。很多人第一次接触conda都是被Anaconda那个巨大的安装包带进门的动不动几个G里面预装了几百个包。但实际上你做数据分析和深度学习真正用到的包也就是NumPy、Pandas、PyTorch那一小撮。Miniconda只带一个conda本体和Python基础环境剩下需要什么装什么干净、可控、出问题容易排查。我自己的习惯是任何一台新机器先装Miniconda绝不装Anaconda除非是给别人做演示图省事。Miniconda默认占空间不到500MB而Anaconda动不动3GB起步这在磁盘紧张的生产环境里差别非常大。还有一个很多人忽略的点WSL里自带的是系统Python那个Python是给系统工具用的你如果直接用pip install往系统Python里塞包搞不好哪天就把系统搞崩了。Miniconda3的核心价值就在于环境隔离。每个项目一个conda环境Python版本、包版本互不干扰。你有个老项目要Python 3.8有个新项目要Python 3.12用conda建两个环境就行了互不打架。这个能力在WSL里尤其好用毕竟WSL本身就是一个偏开发的环境你在里面折腾坏了也不影响Windows主系统。顺便说一句版本问题。WSL分1代和2代如果你条件允许直接上WSL 2。WSL 2用的是一个轻量级虚拟机Linux内核是完整的跑PyTorch、TensorFlow这类需要CUDA的深度学习框架时兼容性更好。WSL 1只是翻译系统调用很多底层操作会出幺蛾子。判断方式很简单打开PowerShell执行wsl --status里面会显示当前默认版本。如果显示的是1执行wsl --set-default-version 2切过去。2. WSL安装前的准备与提速方案2.1 确保Windows版本和系统设置没问题在安装WSL之前我建议你先看一眼系统版本。Win10 2004及以上、Win11所有版本基本都支持WSL 2。右键“此电脑”选属性就能看到系统版本号如果是Win10老版本建议先更新到最新补丁否则后面可能遇到“WSL needs updating”这种提示。安装WSL之前还有两步准备一是以管理员身份打开PowerShell执行下面两条命令开启需要的Windows功能。dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart执行完以后重启电脑。这个步骤很多人会跳过等到装完WSL启动Ubuntu时报错才想起来来回折腾特别浪费时间。另外要注意VirtualMachinePlatform这个功能是WSL 2必须的不开它WSL 2根本跑不起来。2.2 正常在线安装的完整流程重启之后打开PowerShell管理员模式执行wsl --install这条命令会做三件事安装WSL核心组件、启用虚拟化平台、安装默认的Ubuntu发行版。如果你想要指定版本可以加参数在安装前先看下线上有哪些发行版可用wsl --list --online输出会列出Ubuntu、Debian、Kali Linux等一大堆可选发行版挑一个你熟悉的就行。我个人一直用的是Ubuntu社区资料多遇到问题搜起来方便。装的时候执行wsl --install -d Ubuntu-24.04装完之后系统会让你设置一个用户名和密码这个用户默认带sudo权限相当于Linux里的管理员后面装包都要靠它。用户名可以随意取但最好不要用中文避免某些工具链出编码问题。2.3 在线安装太慢或者卡住的解决办法热词榜里有“wsl --install太慢”“wsl install太慢了怎么解决”这确实是很多人卡住的第一道坎。原因不复杂微软在WSL的安装过程中需要从自己的服务器把整个Ubuntu根文件系统拉下来国内网络访问微软CDN经常只有几十KB每秒碰到高峰期干脆就转圈圈。我的办法是不要干等直接手动下载发行版包安装。流程是这样的先在PowerShell里把WSL核心装上。这一步通常很快本质只是一个系统组件的启用。wsl --update然后去微软官方的WSL发行版下载页面找到你想要的Ubuntu版本。下载下来的文件是一个.appx或.msixbundle后缀的包几百MB到1GB左右。用浏览器配合下载工具拉到本地再用PowerShell执行安装Add-AppxPackage .\Ubuntu_2404.1.2.0_x64.appx装完之后开始菜单里会出现Ubuntu的图标点开初始化用户名密码就能用了。这样绕开了微软商店速度通常快很多。2.4 离线环境怎么装WSL如果你所在的机器完全不能访问微软的CDN那还能走离线方案。你需要在另一台能联网的电脑上把WSL的安装包和Ubuntu的appx包都下载好拷贝到目标机器上。WSL的安装包是个.msi文件从微软官网搜“WSL 2 update package”就能找到。双击安装再Add-AppxPackage装Ubuntu发行版离线环境就搞定了。这个操作我自己在实验室的隔离网机器上实测过完全可行。要点只有一个尽量下载完整版本的msi和appx别下载在线安装器那玩意儿在离线环境里一点用都没有。3. Miniconda3安装全过程从下载到创建环境3.1 下载Miniconda3的Linux版安装包进到WSL里的Ubuntu终端以后第一步是下载Miniconda3的Linux安装脚本。这里容易踩坑很多人用Windows浏览器下载Miniconda的Windows版exe然后拿到WSL里装怎么装都不对。你要记清楚WSL里面是一个Linux环境下载的一定是Miniconda3-latest-Linux-x86_64.sh这个文件。用命令行下载最快wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh如果repo.anaconda.com下载速度很慢可以换成清华镜像站把地址前缀改成https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh实测速度能差出十倍不止。下载完先校验一下文件大小在100MB左右才正常如果只有几KB通常是网络中间被拦了重新下载一遍。3.2 静默安装与conda init下载下来后在终端执行bash Miniconda3-latest-Linux-x86_64.sh脚本会先显示许可协议按一下回车往下翻输入yes接受。然后会问你安装路径默认是~/miniconda3直接回车用默认的就行。到了最后一步脚本会问“Do you wish the installer to initialize Miniconda3?”这里一定要输入yes。如果你手滑输了no装完以后conda命令根本找不到非常麻烦。如果你不想交互式安装还可以用静默模式适合写脚本自动化部署bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3 ~/miniconda3/bin/conda init bash第一条命令把Miniconda3装到用户目录第二条命令把conda的初始化配置写入~/.bashrc。之后重开一个终端或者执行source ~/.bashrc命令行前面就会出现(base)前缀说明conda已经生效了。验证一下conda --version能输出版本号这一步就算过了。3.3 安装后必须做的两件事换源和更新conda装好以后我强烈建议第一件事不是建环境而是先把软件源换成国内镜像。不然后面执行conda install的时候你会被那个下载速度折磨到怀疑人生。用命令行直接写配置文件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如果你用的是PyTorch这类需要从conda的pytorch频道装包的框架再补一条conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch另外建议顺手创建一个.condarc文件的备份。换源之后如果conda命令报错多半是镜像配置写错了这时候直接conda config --remove-key channels恢复默认再重来就行。然后是conda自身更新到最新版本conda update conda这一步最好别省。老版本conda在解析包依赖关系时慢得出奇而且经常出现“Solving environment”卡死的情况。升级到新版以后conda用了更快的求解器体感上是质的飞跃。3.4 创建Python虚拟环境以PyTorch环境为例子conda的核心用法就是环境隔离。我习惯每个大项目建一个独立环境环境名字一看就知道项目干什么。比如建一个PyTorch 2.x的环境conda create -n pytorch python3.11 conda activate pytorch第一条命令创建一个叫pytorch的环境指定Python 3.11。第二条命令激活环境激活后命令行前缀会从(base)变成(pytorch)。之后你在这个环境里装任何包都只对这个环境生效不会污染全局。装PyTorch的时候要注意直接从PyPI用pip装可能拿到的是CPU版本要用GPU得从PyTorch官方指定的源装。在WSL 2里如果NVIDIA驱动装好了执行pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121装完以后用一段经典代码验证CUDA能不能用import torch print(torch.__version__) print(torch.cuda.is_available())如果输出True说明WSL里的CUDA已经通了深度学习环境搭建完成。即便没有NVIDIA显卡纯CPU跑PyTorch做学习试验也完全够用。4. VSCode与PyCharm怎么用上WSL里的conda4.1 VSCode连接WSL的配置方法开发环境搭好以后接下来就是日常写代码了。VSCode对WSL的支持是我见过最顺滑的没有之一。安装VSCode之后去扩展市场搜“WSL”装微软官方出的那个Remote - WSL扩展。装完之后在VSCode左下角点一下那个绿色或蓝色的“”图标选择“Connect to WSL”整个VSCode窗口就会重新加载左下角显示WSL的发行版名称比如Ubuntu-24.04这就是进入了WSL环境。在这个模式下VSCode左侧的文件树访问的是Linux文件系统终端也是Linux终端。此时你按下CtrlShiftP输入“Python: Select Interpreter”VSCode会自动扫描WSL里的conda环境你选pytorch那个环境就行。这一步非常关键很多人VSCode能正常打开但找不到conda包就是因为解释器还是Windows侧的Python。选对解释器后代码跳转、代码补全、运行调试全部走的是WSL里的Python和原生Linux开发体验没有区别。4.2 PyCharm配置WSL conda环境的步骤PyCharm的用户也别慌操作也不复杂。先打开PyCharm进入Settings找到“Project - Python Interpreter”点右上角的齿轮图标选择“Add Interpreter - WSL”。PyCharm会自动检测WSL里已有的conda安装位置弹出一个窗口让你选是使用哪个conda环境。选中你之前创建的pytorch环境确认之后PyCharm就会用WSL里的Python解释器来跑项目。有个小坑PyCharm连接WSL时要求WSL里已经装好了Python解释器否则它检测不到。Miniconda3的base环境自带Python所以前面装conda就顺手解决了这个问题。另外PyCharm项目文件如果是放在Windows盘符下比如C:\Users\...在WSL里访问会走/mnt/c/...的路径读写速度比WSL原生文件系统慢一些。建议PyCharm打开项目时直接把项目放在\\wsl$\Ubuntu-24.04\home\你的用户名\这个路径下速度会快很多。4.3 WSL里跑Jupyter Notebook的端口问题很多时候我们习惯用Jupyter Notebook来跑数据分析和深度学习实验在WSL里跑Jupyter然后Windows浏览器访问也是一个常见需求。方法很简单在WSL终端里激活某个conda环境然后执行jupyter notebook --no-browser --port8888这时Jupyter会启动在WSL的8888端口并且输出一个带token的访问地址。因为WSL 2和Windows共享网络你直接在Windows浏览器里访问http://localhost:8888就能打开Notebook不用做任何端口映射。如果你用的是WSL 1可能需要在PowerShell里手动跑netsh interface portproxy添加端口转发但WSL 2下这一步完全不需要。4.4 Windows和WSL文件互访的小技巧日常开发里Windows和WSL之间互传文件很频繁。在WSL里Windows的盘符挂载在/mnt/目录下比如C:\Users\你的用户名\Downloads对应WSL里的/mnt/c/Users/你的用户名/Downloads。反过来WSL的文件在Windows资源管理器地址栏输入\\wsl$\Ubuntu-24.04就能访问整个Linux文件系统甚至可以映射成网络驱动器方便日常拖拽文件。不过这里我要强调一个经验项目代码和数据文件别放在/mnt/c下面。因为跨文件系统读写是通过网络协议模拟的速度很慢大量小文件操作时差距尤其明显。我的习惯是代码放在WSL内部/home/用户名/下面需要拿回Windows查看的时候再用\\wsl$\路径去读。5. WSL Miniconda3常见问题排查实录5.1 安装和日常使用中的典型报错速查表我把这几年在WSL和Miniconda上遇到过的典型问题整理了一下按出现频率排的每一个都是我实际踩过坑后总结出来的。问题表现常见原因解决办法wsl --update一直转圈或报无法与服务器建立连接微软CDN被墙或网络不稳定使用离线msi包手动安装WSL或者换个时间段重试启动Ubuntu时提示“WSL needs updating”WSL内核版本过旧执行wsl --update或安装最新WSL内核更新包wsl --install卡在99%很久下载发行版根文件系统时网络中断CtrlC取消后用wsl --install -d Ubuntu-24.04重试或直接下载appx包离线安装conda: command not found安装时没执行conda init或没重新打开终端执行source ~/.bashrc如果还不行手动运行~/miniconda3/bin/conda init bash然后重启终端conda install速度很慢默认官方源访问慢按上文方法换清华镜像源换完conda clean -i清缓存激活环境后pip安装的包找不到激活了conda环境但环境里的pip是系统pipwhich pip检查路径是否在conda环境下不在则执行python -m pip install保证装进当前环境双击Ubuntu图标没反应WSL服务未启动或版本配置冲突PowerShell执行wsl --shutdown再重新启动Ubuntuwsl命令报0x80072ee7网络请求被拦截或DNS解析失败把DNS改成8.8.8.8试一次或者检查公司网络代理配置这里面0x80072ee7是很多Windows用户都会碰到的错误通常在执行wsl --list --online或wsl --update时出现。本质上是系统访问外网失败排查顺序是先确认能正常打开普通网页再把DNS改成一个公共DNS最后查看一下系统代理设置很多企业电脑开了代理但是没配置白名单就会导致这种更新失败。5.2 装完Miniconda后conda命令与系统权限问题再者是权限问题。Linux下装Miniconda3安装路径放在用户目录下就没问题但如果你用了sudo去装或者不小心把文件装到了/root目录后面启动普通用户终端时conda可能不可用或者能启动但无法创建环境。我的原则是conda只给当前用户用永远不用sudo装包不把conda装在系统级目录。如果确实需要给多个用户共享环境那直接用Docker不要硬凑conda多用户方案省得权限问题从入门到放弃。还有一个常见情况.bashrc里的conda初始化配置冲突。有些人在~/.bashrc里手动添加了一堆环境变量和启动命令和conda自动写入的初始化脚本冲突导致每次打开终端都会打印一堆警告甚至conda activate失效。解决方法也简单用文本编辑器打开~/.bashrc找到 conda initialize 和 conda initialize 之间的内容确认只有一段如果被重复添加了删掉多余的再source ~/.bashrc。5.3 磁盘空间被WSL吃掉了怎么办WSL 2的虚拟磁盘文件一个.vhdx文件会随着你在里面装包、装环境不断膨胀而且不会自动缩小。我见过有人装了几个月后C:\Users\用户名\AppData\Local\Packages\...\LocalState\ext4.vhdx膨胀到了几十个G。解决办法有两个层面。第一是日常用conda clean --all清掉conda的缓存包这个命令能释放不少空间。第二是定期压缩vhdx文件先关闭WSL然后在PowerShell执行wsl --shutdown diskpart进入diskpart以后选择虚拟磁盘文件再压缩select vdisk fileC:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_xxx\LocalState\ext4.vhdx attach vdisk readonly compact vdisk detach vdisk exit这个操作能把你从WSL里删掉但没还给磁盘的空间找回来。路径里的CanonicalGroupLimited后面那串字母每台机器都不一样你直接去对应Ubuntu版本的包目录下找ext4.vhdx就行。6. 最后的几点个人经验和建议关于WSL里配置Miniconda3这件事我最后再分享几个自己用得顺手的习惯。第一个习惯是把conda环境名字取得有规律一些。我一般用“框架名Python版本”的格式比如pt311就是PyTorch加Python 3.11sk310就是Scikit-learn加Python 3.10。环境一多你就知道这个命名规则有多重要了不然过两个月再看一堆env1、env2根本记不清里面装了啥。第二个习惯是装包之前先想清楚用conda还是pip。我的原则很粗暴凡是conda官方源或者镜像源有的优先用condaconda没有的再用pip。混用的时候记住一条铁律——不要在一个conda环境里用系统的pip直接装包一定要用python -m pip install确保pip装进的是当前conda环境的site-packages。否则很容易出现“conda list里看不到包但import就是不报错”的诡异情况。第三个习惯是分享给新手的别一上来就折腾CUDA。先用CPU版PyTorch跑通一个最简单的训练代码确认WSL、Miniconda、Python、Jupyter这一整条链路没问题再去装GPU版本。我见过太多人一口气装CUDA结果环境坏了也不知道是conda的问题还是驱动的锅排查起来心态直接崩掉。WSL加Miniconda3这套组合是我目前在Windows上做Python开发最推荐的方式。轻量、干净、好回滚而且社区资料丰富遇到问题基本都能搜到答案。如果你照着这篇文章装完一遍再回头看刚开始那些报错热词应该会有一种“也就这么一回事”的感觉。
返回列表