先说个结论:标题里说的这件事,是目前在 Windows 上做 Python 开发最值得花半小时搞定的基础配置。WSL 里跑 Conda,再用 Conda 建 Python 环境,好处不只是“能跑”,而是把你从 Windows 和 Linux 两套工具链来回切换的混乱里彻底解放出来。你在 Windows 侧看着 WSL 里的 Python 脚本在跑,但文件、依赖、环境变量全都在一个干净的 Linux 隔离空间里,不会和系统里乱七八糟的 Python 打架,也不会因为装了个包把整个系统搞坏。
这篇文章就是一份完整的实操记录,覆盖了下载安装 Miniconda、用 Conda 创建带指定 Python 版本的虚拟环境、配置 pip、处理国内下载慢的问题,还有我自己踩过的几个坑。适合刚接触 WSL 的同学,也适合在 Windows 上开发但一直觉得环境乱、想重新整理一遍的人。你会看到我为什么选这套方案、每一步在做什么、出了错怎么排查。
1. 整体思路与方案决策:先想清楚为什么要在 WSL 里折腾环境
1.1 为什么选 WSL + Conda,而不是直接在 Windows 里装 Python
很多人在 Windows 上直接下载安装 Anaconda,然后用 conda 建环境,这么做不是不能用,但遇到真实项目会越来越别扭。典型的问题有几个:一是 Windows 版 Python 和某些带 C 扩展的库兼容性差,像是 psycopg2、pydantic、numpy 这类需要编译的包,经常装的时候报“Microsoft Visual C++ 14.0 is required”;二是团队部署多半是 Linux 服务器,你在 Windows 上开发完,代码一上服务器就各种环境差异,明明本地能跑一到 Linux 就崩溃。
WSL 的语义是把 Linux 环境“塞”进 Windows,不需要装双系统,也不需要开虚拟机,直接通过终端模拟出一个几乎原生的 Linux 用户态。开发时你在 WSL 里用的 Python 和依赖,和服务器上用的是同一套体系,编译行为、文件权限、路径规则都一致。再把 Conda 放进去管理 Python 版本,等于同时解决了“跨平台一致性”和“多项目的依赖隔离”两个最头疼的问题。
1.2 Python 环境放到哪个层级,决定了你后续会不会踩坑
这里先说清楚一个层级关系。WSL 是底层系统,Conda 是运行在 WSL 里的包管理与环境管理工具,Python 是 Conda 管理下的运行时。你不要直接去 WSL 的 Ubuntu 系统目录里手动装 Python,也不要用 apt install python3 装一大堆包。正确的姿势是:系统层面保持干净,所有 Python 版本和依赖都收在 Conda 的 envs 目录里。
我见过不少人在 WSL 里先用 apt 装了 python3-pip,之后又装了 Miniconda,两种 pip 互相覆盖,最后 terminal 里敲 pip 指向的是 /usr/bin/pip,敲 python 指向的却是 conda 的 Python,两个 pip 指向不同解释器,装完包以后 import 直接失败。排查这种问题非常浪费时间。最好的方案就是从一开始就不碰系统 Python,把系统 Python 交给系统服务去用,项目里的 Python 全走 conda env。
1.3 安装目录选择:不要把 Conda 环境放到 /mnt/c 下面
这是我在实操中踩过最深的一个坑。WSL 通过 /mnt/c 访问 Windows 的 C 盘目录,如果你的 Home 目录在挂载的 Windows 路径下,或者你把 Miniconda 安装到 /mnt/c/xxx,文件访问性能会有很明显的损耗,尤其是安装大量小文件包的时候,速度慢得像是卡住了一样。
Conda 环境一旦创建,会有大量小文件,python 的 site-packages 目录里有几百上千个文件。如果整个环境放在 Windows 文件系统里,每次激活环境读 py 文件、导入模块、写字节码缓存都会跨文件系统读写,性能能差数倍。所以我的建议一直是:Miniconda 装到 WSL 的 Linux 文件系统里,也就是默认的 ~/miniconda3,环境也默认放在 /home/用户名/miniconda3/envs 下。Windows 侧的代码可以用软链接或者复制的方式放进去,但环境本体不要跨盘放。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署实操:从 WSL 到 Miniconda 的完整安装记录
2.1 先确认 WSL 基本可用
如果你的 WSL 已经装好,可以跳过这步。如果还没装,在管理员 PowerShell 里跑:
powershell复制wsl --install
这条命令会安装 WSL 2 内核并默认安装 Ubuntu。执行完成之后按要求重启系统,然后从开始菜单打开 Ubuntu 终端
