Windows AI 开发环境搭建(三):WSL Linux 安装 Node、Python

本文是 Windows AI 开发环境搭建的第三部分,主要介绍 WSL Linux 安装 Node、Python 的最佳实践。涉及 node 相关如 nvm、pnpm;python 相关如 uv、conda、miniforge、mamba、pixi 等工具。

Node 环境

nvm 安装 node

不要下载 Node 安装包直接安装,由于各项目支持的 Node 版本不一定相同,老旧有兼容性问题,使用 node 版本管理工具 nvm 可以安装多版本 node,方便管理与切换。

Bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash

在当前窗口使 node 路径生效,重新加载执行:

Bash
source ~/.bashrc

检查 nvm 是否安装成功:

Bash
nvm --version # 0.40.6

根据需要安装 node 版本,不确定的话,目前推荐安装 Node 24 LTS:

Bash
nvm install 24

查看安装列表

Bash
nvm ls

安装更多版本,例如 22

Bash
nvm install 22

当前是 22 版本,需要切回 24

Bash
nvm use 24 # nvm use node or nvm use stable,因为 24 是最新稳定都指向了它们

检查:

Bash
node -v
npm -v

nvm use xx 只是在当前窗口临时改变 node 版本,每次新开窗口 node 版本是指定的 default 版本,默认是 24,如果需要其他,可以修改指定,例如默认改成 22 :

Bash
nvm alias default 22

这样,每次打开都是你想要的 node 版本了。

corepack 安装 pnpm

现在很多项目例如 Next.js 都开始使用 pnpm。新项目推荐使用 pnpm。

原因:

  • 极大节省空间,多个项目依赖同一个版本的包,只在全局下载一份,可以避免 node_modules 俏俏蚕食你的硬盘空间
  • 速度快很多,由于多项目共享包,不用重复下载
  • 减少依赖问题,由于对于依赖书写要求更严格

如果需要团队协作,建议使用 corepack 代理 pnpm。 corepack 是 node 从 14.19.0 到 24 版本默认带的,25 后可能不再默认集成在 node 里。

corepack 是用来管理 pnpm、yarn 多版本的工具,例如项目指定 pnpm 版本,输入 pnpm install 安装时,corepack 会检查是否安装指定版本,如果没有会提示你下载指定版本。

查看 node 是否自带 corepack

Bash
corepack --version

如果没有 corepack,需要先卸载 pnpm、yarn,再安装 corepack 让其代理 yarn、pnpm 命令行工具

Bash
npm uninstall -g yarn pnpm
npm install -g corepack

# 更新到最新版本
npm install -g corepack@latest

这里举个例子,你的项目中的 package.json,设置了如下字段

JSON
{
  "packageManager": "[email protected]"
}
Bash
corepack enable # 开启 corepack 代理
pnpm install

提示你下载指定版本

Bash
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-10.14.0.tgz
? Do you want to continue? [Y/n]

输入 Y 后,会下载安装指定的 pnpm,并把项目的依赖装好

查看版本

Bash
pnpm -v # 显示 10.14.0

pnpm 会把包安装在特殊目录,进行管理,避免不同项目之间相同的包,多次下载,占用空间。查看 pnpm 存储目录:

Bash
pnpm store path # ~/.local/share/pnpm/store

查看包占用硬盘大小

Bash
du -sh $(pnpm store path)

清理无用包,会删除当前没有任何项目引用的包:

Bash
pnpm store prune

跳出当前项目目录,再查看

Bash
cd ..
pnpm -v

提示你安装最新版本

Bash
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-11.18.0.tgz
? Do you want to continue? [Y/n] Y

这次,输入 Y ,相当与在全局安装了最新版本。切回项目目录,依然是项目指定版本

Bash
pnpm -v # 显示 11.18.0
cd - # 切换刚才项目目录
pnpm -v # 显示 10.14.0

pnpm 多版本会下载在如下目录

Bash
~/.cache/node/corepack

清空所有下载的 pnpm,执行 pnpm 命令会再次提醒下载安装

Bash
corepack cache clean

以实际 Ubuntu-24.04 为例

WSL Ubuntu

~/.cache/node/corepack
        |
        └── pnpm 10.14.0
        └── pnpm 11.18.0

~/.local/share/pnpm/store
        |
        └── React / Next / AI 前端依赖缓存

项目目录
        |
        └── node_modules
             (链接)

如果不想使用 corepack,仅考虑个人日常使用,可以简单点如下安装:

Bash
npm install -g pnpm

Python 环境

Ubuntu 自带 Python:

检查:

Bash
python3 --version # 3.12.3

安装 python 包管理器 uv

uv(Python 世界的 pnpm,一个工具替代 pip + venv + pip-tools + poetry)

uv 非常适合管理 Python 包:

  • FastAPI
  • AI API
  • 自动化脚本

安装:

Bash
curl -LsSf https://astral.sh/uv/install.sh | sh

在当前窗口使 uv 路径生效,重新加载执行:

Bash
source ~/.bashrc

检查:

Bash
uv --version

创建 Python 项目:

Bash
mkdir python-test

cd python-test

uv init

安装依赖:

Bash
uv add requests # 安装在 项目目录 .venv/lib/pythonX.XX 下面

新建 main.py 文件

Python
import requests

print(requests.__version__)

运行:

Bash
uv run main.py

以后简单的 Python 项目,不要:

Bash
pip install xxx

推荐做项目隔离,例如新建项目,需要使用新的 python 版本

Bash
# 系统默认 3.12.3
uv venv --python 3.12.0
Bash
Using CPython 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

会下载 python 3.12.0 到以 ~/.local/share/uv/python 目录,查看安装 python 多版本情况

Bash
uv python list

当前命令行窗口,改为项目 python 版本,执行:

Bash
source .venv/bin/activate

python3 --version # 3.12.0

可以查看 uv python 命令行更多细节

Bash
uv python

AI 深度学习 Python 环境

对于普通 Python 包:

  • numpy
  • pandas
  • requests

uv 足够,但是 AI 库

  • PyTorch
  • CUDA
  • cuDNN
  • OpenCV
  • TensorRT

涉及:python -> C++ -> CUDA -> GPU Driver,这就是 Conda 擅长的了,

Conda 不仅擅长 Python 包管理,并且擅长管理复杂的二进制依赖:

  • Python版本
  • C/C++库
  • CUDA相关依赖
  • 系统库

Conda 版本演变

  • Anaconda :大而全的 Conda 发行版本,零配置,开箱即用,但有些包你未必需要,浪费磁盘空间
  • Miniconda :精简版 Conda,依赖解析速度慢,官方包渠道有版权问题

Conda-forge :社区渠道,其中的包开源免费,解决了包版权不清的问题

Miniforge + Mamba

Miniforge = Miniconda + 默认的社区 Conda-forge 渠道 + 默认高速依赖解析器 Mamba。Miniforge 解决了以下问题

  • 臃肿问题:Miniforge 本质是轻量版的 Conda,预安装包小,轻量
  • 版权问题:默认使用 conda-forge 社区开源,没有版权问题
  • 解析依赖慢的问题:默认使用 Mamba
    • Mamba C++ 使用业界顶尖解析器 libsolv 重写用来替代 Conda 解析器
    • Manba 多线程下载,比 Conda 单线程下载,能充分利用宽带提速
    • Manba 完全兼容 Conda

AI 生态兼容性极佳,完美支持 PyTorch、CUDA 等底层复杂依赖,几乎不会遇到找不到包或安装报错的问题。

推荐个人学习研究,跑 AI 时使用。

Bash
uname    # Linux
uname -m # x86_64

下载 Miniforge 安装脚本:

Bash
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"

执行脚本:

Bash
bash Miniforge3-$(uname)-$(uname -m).sh
  1. Enter 键查看协议
  2. 看完后同意协议输入 yes
  3. 提示默认装在 ~/miniforge3 目录,Enter 确定
  4. 提示 Conda 初始化,输入 yes

使得 Conda 生效:

Bash
source ~/.bashrc

检查:

Bash
conda --version # conda 26.3.2

查看 Conda 初始化详细信息

Bash
conda info

默认每次进入 WSL 都会激活 Conda base 环境,命令行用户名前面会有 (base) 提示,如果不喜欢可以取消

Bash
conda config --set auto_activate_base false

需要时,再激活

Bash
conda activate

查看渠道,默认只有 conda-forge

Bash
conda config --show channels
# channels:
#  - conda-forge

如果有多渠道,可以开启严格优先级,优先从开源免费社区 conda-forge 获取,避免版权问题

Bash
conda config --set channel_priority strict

改用 mamba 比 conda 会快很多

Bash
mamba --version
mamba deactivate
mamba activate
mamba install numpy
# 替代 conda
conda deactivate
conda activate
conda install numpy

pixi

pixi 和 uv 合作,使用 uv 的依赖解析器,Rust 编写,速度比 Miniforge 更快。适合

  • 追求极致的安装和切换速度的用户
  • 团队开发完整的 AI 工程项目,需要团队共享一致的依赖版本(锁定 pixi.lock),环境复现极其精准,开发体验类似 npm

了解即可,生态发展稳定后,可以考虑使用。

至此,Windows 上一个基础的 AI 开发环境就搭建完毕,开始 Coding 吧。