适用场景:你在 Windows 上同时维护一个基于 Python 3.7 的老项目,又想用 Python 3.11 开发 AI 或 Web 新项目。如何避免 pip 冲突、解释器混乱和依赖污染?本文专为 Windows 用户打造,手把手教你搭建清晰、稳定、可复现的多版本 Python 开发环境。


一、为什么 Windows 用户更需要版本管理?

在 Windows 上,Python 环境管理比 macOS/Linux 更具挑战性:

  • 安装多个 Python 时,python 命令可能指向任意一个版本(取决于 PATH 顺序)
  • 不同版本的 Scripts 目录混杂,pip 命令行为不可预测
  • 旧项目依赖的库(如某些 C 扩展)可能无法在新版 Python 中编译

若不加管理,你可能会遇到:

ModuleNotFoundError: No module named 'torch'
ImportError: DLL load failed while importing _ctypes

——这些往往不是代码问题,而是环境混乱导致的“幽灵错误”。


二、Windows 下主流方案对比

方案 优点 缺点 推荐场景
pyenv-win 轻量、命令行友好、支持几乎所有 CPython 版本 需手动配置 PATH,部分 GUI 工具识别困难 开发者首选
Microsoft Store 安装多个 Python 官方支持、自动注册到 py 启动器 仅限较新版本(≥3.7),无法安装任意小版本 快速尝鲜
Miniconda / Anaconda 一体化管理(Python + 包 + 环境),AI 生态完善 体积大,学习曲线稍陡 数据科学、机器学习
官方安装包 + 手动 PATH 管理 完全控制 极易出错,不推荐 ——

本文主推组合
通用开发pyenv-win + venv
AI/ML 项目Miniconda


三、方案一:使用 pyenv-win(推荐给大多数开发者)

步骤 1:安装 pyenv-win

注意:不要与 Linux/macOS 的 pyenv 混淆,Windows 专用版本是 pyenv-win

方法 A:PowerShell 一键安装(推荐)
# 以管理员身份打开 PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# 执行安装脚本
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
方法 B:手动安装(高级用户)
  1. 克隆仓库到 %USERPROFILE%\.pyenv
  2. 将以下路径加入系统环境变量 PATH
    %USERPROFILE%\.pyenv\pyenv-win\bin
    %USERPROFILE%\.pyenv\pyenv-win\shims
    

安装后重启 PowerShell 或 CMD,使 PATH 生效。


步骤 2:验证安装并查看可用版本

# 检查是否安装成功
pyenv --version
# 输出示例:pyenv 2.64.11

# 列出所有可安装的 Python 版本(含 3.7.x, 3.11.x 等)
pyenv install --list | findstr "3.7 3.11"

提示:findstr 是 Windows 的 grep 替代命令。


步骤 3:安装所需 Python 版本

# 安装 Python 3.7.17(选择最新 patch)
pyenv install 3.7.17

# 安装 Python 3.11.8
pyenv install 3.11.8

# 查看已安装版本
pyenv versions

输出示例:

* system (set by %USERPROFILE%\.pyenv\pyenv-win\version)
  3.7.17
  3.11.8

首次安装可能需要几分钟,pyenv-win 会自动下载预编译的官方安装包(无需编译)。


步骤 4:为不同项目设置独立环境

场景 A:维护老项目(Python 3.7)
# 进入项目目录
cd D:\projects\legacy-app

# 设置当前目录使用 Python 3.7.17
pyenv local 3.7.17

# 验证:当前目录下 python 命令指向 3.7
python --version
# 应输出:Python 3.7.17

# 创建虚拟环境(推荐命名为 .venv)
python -m venv .venv

# 激活虚拟环境
.\.venv\Scripts\Activate.ps1

# 若提示执行策略错误,先运行:
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

激活后,命令行前缀会变成 (.venv) D:\projects\legacy-app>

场景 B:开发 AI 项目(Python 3.11)
cd D:\projects\ai-project
pyenv local 3.11.8
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python --version  # 应显示 3.11.8

关键机制
pyenv local 会在当前目录生成 .python-version 文件,内容为 3.11.8。当你进入该目录,pyenv 自动切换 Python 版本。


步骤 5:日常使用命令速查(Windows 特有)

命令 说明
pyenv versions 列出所有已安装版本
pyenv global 3.11.8 设置全局默认版本(慎用)
pyenv local 3.7.17 设置当前目录版本(推荐)
pyenv which python 显示当前生效的 python.exe 路径
deactivate 退出虚拟环境
Remove-Item .python-version 删除本地版本绑定

四、方案二:使用 Miniconda(AI/数据科学首选)

如果你主要做机器学习、深度学习,Conda 能更好地处理 CUDA、MKL 等复杂依赖。

安装与配置

  1. 下载 Miniconda for Windows
  2. 安装时勾选 “Add to PATH”(方便命令行使用)
  3. 打开 Anaconda Prompt(或 PowerShell)

创建多版本环境

# 创建 Python 3.7 环境(用于老项目)
conda create -n legacy python=3.7

# 创建 Python 3.11 环境(用于 AI)
conda create -n ai python=3.11

# 激活环境
conda activate legacy
python --version  # 显示 3.7.x

conda activate ai
python --version  # 显示 3.11.x

# 退出环境
conda deactivate

环境管理优势

  • 导出环境:conda env export > environment.yml
  • 克隆环境:conda create -n ai-backup --clone ai
  • 安装 PyTorch(自动匹配 CUDA):
    conda activate ai
    conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
    

五、VS Code 配置:让编辑器识别正确环境

无论使用 pyenv-win 还是 Conda,VS Code 都需手动指定解释器:

  1. 安装 Python 扩展(由 Microsoft 提供)
  2. 打开项目文件夹
  3. Ctrl+Shift+P → 输入 “Python: Select Interpreter”
  4. 选择对应路径:
    • pyenv-win:D:\projects\myapp\.venv\Scripts\python.exe
    • Conda:C:\Users\<user>\miniconda3\envs\ai\python.exe

配置后,终端、调试器、linting 都会使用正确环境。


六、常见问题与解决方案(Windows 专属)

问题 1:.\.venv\Scripts\Activate.ps1 无法运行

  • 错误execution of scripts is disabled on this system
  • 解决
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    

问题 2:pyenv 命令找不到

  • 原因:PATH 未正确设置
  • 检查
    echo $env:PATH
    
    确保包含:
    C:\Users\<你的用户名>\.pyenv\pyenv-win\bin
    C:\Users\<你的用户名>\.pyenv\pyenv-win\shims
    

问题 3:安装 Python 时报 “Access is denied”

  • 解决:以 普通用户(非管理员)运行 PowerShell,避免权限冲突

问题 4:旧项目需要特定小版本(如 3.7.4)

  • 解决:pyenv-win 支持安装任意官方版本,包括历史版本:
    pyenv install 3.7.4
    

七、最佳实践总结(Windows 版)

  1. 永远不要全局安装包pip install 只在虚拟环境中使用
  2. 每个项目一个 .venv:隔离依赖,避免“在我机器上能跑”
  3. pyenv local 锁定版本:团队协作时可共享 .python-version
  4. VS Code 显式选择解释器:避免自动检测错误
  5. 定期清理无用环境
    # pyenv-win:删除版本
    pyenv uninstall 3.7.0
    
    # Conda:删除环境
    conda env remove -n old-env
    

八、结语

在 Windows 上管理多个 Python 版本不再是噩梦。借助 pyenv-winMiniconda,你可以像专业开发者一样,轻松切换 3.7 和 3.11,既维护老系统,又拥抱新技术。

记住
环境即代码,版本即契约。
一个清晰的 Python 环境,是你高效开发的第一道防线。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐