在Win11上通过禁用PATH自动添加、指定版本化安装路径、启用py启动器实现多Python版本共存与路由,并用pyenv-win支持项目级版本锁定。

你在Win11上同时装了Python 3.9、3.11和3.13,但每次想用某个版本都得手动改PATH或输完整路径,PowerShell里敲python永远只认一个版本——这不是你配置错了,而是缺一套真正适配Windows的版本路由机制。
禁用安装时自动注入PATH,从源头避免冲突
所有Python安装包默认勾选“Add Python to PATH”,这是多版本混乱的起点。必须在每一轮安装中主动拦截。
下载Python 3.9.16、3.11.9、3.13.2的Windows installer(64-bit)后,逐个运行安装程序:第一步就取消勾选“Add Python to PATH”;进入“Customize installation”后,再次确认“Add Python to environment variables”仍为未勾选状态;在“Advanced Options”页中,【务必手动指定安装路径为含版本号的独立目录,例如C:\Python\Python39\、C:\Python\Python311\、C:\Python\Python313\】。
完成安装后,进入C:\Python\Python39\目录,双击python.exe验证是否能正常启动交互式解释器——这一步不能跳过,有些精简版安装包会漏掉pythonw.exe,但只要python.exe存在且可运行,后续方案就完全可控。
立即学习“Python免费学习笔记(深入)”;
启用Windows原生py启动器实现零配置路由
Win10/Win11系统已预装py启动器,它不依赖PATH顺序,而是通过注册表扫描已知安装路径,是微软官方推荐的多版本调度方案,优先级高于任何第三方工具。
打开任意PowerShell窗口,执行py --version。若返回版本信息(如Python 3.11.9),说明py启动器已就绪;若提示“命令未找到”,请重启电脑再试一次——极少数情况下系统服务延迟加载会导致首次检测失败。
执行py -0列出所有被识别的Python版本。你会看到类似输出:
-V:3.13 (64-bit)<br>-V:3.11 (64-bit)<br>-V:3.9 (64-bit)。这意味着py已成功定位到你刚安装的三个版本。
现在可以直接用py -3.9调用Python 3.9,py -3.11调用3.11,py -3.13调用3.13。无需任何环境变量修改,也不需要重启终端。
验证pip归属:执行py -3.11 -m pip --version,输出中必须同时包含“python 3.11”字样和路径C:\Python\Python311\Scripts\pip.exe——如果路径指向其他版本目录,说明该版本pip被污染,需用py -3.11 -m ensurepip重装。
用pyenv-win实现项目级Python版本锁定
当你需要为某个特定项目(比如一个Django 4.2项目必须用Python 3.9)自动绑定解释器,而不是每次手动敲py -3.9,这时pyenv-win就派上用场了。
方法一:通过PowerShell管理员模式一键安装
以管理员身份打开PowerShell,执行: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"
方法二:使用scoop安装(适合已配置scoop用户)
先确保已安装scoop:irm get.scoop.sh | iex;再执行scoop install pyenv-win。
安装完成后,关闭所有PowerShell窗口(关键!环境变量需全新加载),重新打开一个普通PowerShell,执行pyenv --version。若看到类似pyenv 2.64.11的输出,说明安装成功。
第一步:让pyenv-win发现你已安装的Python版本
执行pyenv rehash,它会扫描C:\Python\目录下所有含版本号的子目录,并为每个python.exe生成shim代理文件。
第二步:查看可用版本列表
执行pyenv versions,应显示:
3.9.16<br> 3.11.9<br> 3.13.2(前面带空格表示已安装)。
第三步:为当前项目目录设置局部版本
进入你的Django项目根目录,执行pyenv local 3.9.16。这会在该目录下生成一个名为`.python-version`的纯文本文件,内容仅为3.9.16。此后只要在这个目录及子目录中打开PowerShell,python命令就会自动路由到Python 3.9.16。


















