Windows下怎么用命令升级Python版本

Ada
Ada
发布时间:2026-11-06| 6人浏览过
原创

详解在Windows系统下使用命令行升级Python版本的完整流程与方法,涵盖winget、Chocolatey、PowerShell静默安装、py启动器版本管理以及第三方包迁移与环境变量配置。

在Windows操作系统下,用命令行升级Python版本的最直接且推荐的路径是使用系统内置的包管理器winget进行新版本拉取,并配合Windows自带的py启动器(Python Launcher)重新绑定默认版本。本文将完整介绍从版本状态探查、三种主流命令行升级方式(winget、第三方包管理器、PowerShell静默安装)、环境变量与默认版本重定向,到第三方库依赖迁移的全部实操步骤与排错细节。
Windows下怎么用命令升级Python版本
图 1:Windows 命令行 Python 升级架构与命令路由体系

一、核心认知:Windows环境下Python的“升级”本质

在深入执行命令之前,需要明确Windows平台与其他系统(如Linux发行版中的包管理器就地替换)的一个关键底层差异:Windows上的Python次要版本(Minor Version,如3.10与3.12)属于相互独立的并行安装体系,不会直接覆盖旧目录。

具体表现为:

  • 修订号补丁更新(Patch Update,例如 3.12.1 升级至 3.12.6):属于维护性升级,安装包通常会识别旧的同分支目录,直接替换二进制文件并完成同位覆盖升级。
  • 次要版本跨代升级(Minor Update,例如 3.10.x 升级至 3.12.x):安装程序会在系统上建立全新的物理目录(如 C:\Program Files\Python312),旧版本的安装目录(如 Python310)原封不动保留。因此,命令行升级的实质包含安装新内核、更新全局调度优先级、迁移扩展库三个环节。

二、第一步:运行环境探查与旧版本基准记录

在以管理员身份启动Windows Terminal或PowerShell后,首先需要运行探测命令,摸清当前主机的Python注册状态与已安装的三方库清单。

1. 查看当前终端正在响应的默认版本

PowerShell检查生效版本
python --version

示例输出:

Console Output示例输出
Python 3.10.11

2. 列出系统已登记的所有Python版本路径

Windows内置的 py.exe(Python Launcher)是管理多版本共存的利器。通过它能够查出系统中全部由安装程序注册的Python实例及其绝对物理路径:

PowerShell列出多版本物理路径
py -0p

示例输出:

Console Output示例输出
Installed Pythons found by py Launcher for Windows
 -3.10-64 *      C:\Program Files\Python310\python.exe
 -3.8-64         C:\Users\Admin\AppData\Local\Programs\Python\Python38\python.exe

输出中带有星号 * 的项代表当前 py 命令默认调用的版本。

3. 备份导出旧版本的第三方依赖库清单

因为新版本具有独立纯净的 site-packages 目录,升级后需要重新安装常用的扩展包。趁旧环境依然完整,先将其导出为清单文件:

PowerShell备份依赖清单
# 如果当前默认版本是 3.10,直接导出
python -m pip freeze > "$HOME\Desktop\requirements_backup.txt"

# 或者显式指定旧版本导出
py -3.10 -m pip freeze > "$HOME\Desktop\requirements_backup.txt"
Windows下怎么用命令升级Python版本
图 2:Windows 命令行升级 Python 标准四步执行流水线

三、方法一:使用 Windows 内置包管理器 winget(首选方案)

Windows 10(1809及之后版本)和Windows 11均已预装微软官方的Windows应用包管理器(winget)。使用winget无需打开浏览器或手动寻找安装包,整套操作直接在命令行下完成。

1. 搜索官方源中最新的Python版本

PowerShell查询可用包
winget search Python.Python

命令执行后将列出微软社区源中维护的官方安装包ID。常见标识形如 Python.Python.3.12、Python.Python.3.11 等。

2. 执行静默安装与版本升级

如果当前已安装Python 3.12的早期补丁(例如3.12.1),需要升级到当前分支最新版(如3.12.6),可直接使用升级命令:

PowerShell同分支补丁升级
winget upgrade Python.Python.3.12

如果希望从旧大版本(如Python 3.10)升级跨入全新的Python 3.12,由于winget将不同次要版本划分为独立的应用包ID,应使用标准安装命令进行拉取:

PowerShell全新目标版本安装
winget install Python.Python.3.12 --scope machine
参数关键解析:
--scope machine:指定安装范围为整台计算机(面向所有用户),安装路径将落入系统级目录 C:\Program Files\Python312,并自动为全局用户注册系统变量与 py.exe 启动器支持。若省略该参数,默认可能仅安装至当前用户的 AppData 目录。

四、方法二:使用第三方包管理器 Chocolatey 或 Scoop

对于在本地搭建了统一软件工程工具链的开发者,使用现有的包管理器可以更便捷地实现一体化升级。

1. Chocolatey 升级方式

以管理员权限运行PowerShell,首先检查过时包状态:

PowerShell (Admin)检查与升级
# 查看是否检测到新版本
choco outdated

# 执行自动升级
choco upgrade python -y

若需要锁定升级至指定版本,可以添加版本参数:

PowerShell (Admin)指定版本升级
choco upgrade python --version=3.12.6 -y

2. Scoop 升级方式

Scoop采用用户空间的Shim分发机制,环境升级极为轻量:

PowerShellScoop环境更新
# 刷新仓库元数据
scoop update

# 升级 Python 并重定向 shims 符号链接
scoop update python

五、方法三:PowerShell 一键下载并执行静默安装

在无法使用外部包管理器(如公司内网、高安全受控主机或无外网源访问权限的服务器)时,可通过PowerShell原生网络指令从官方下载安装程序,并通过静默安装开关完成一键升级。

PowerShell (Admin)原生静默脚本
# 1. 设定安装版本与下载目标
$version = "3.12.6"
$installerUrl = "https://www.python.org/ftp/python/$version/python-$version-amd64.exe"
$installerPath = "$env:TEMP\python-$version-amd64.exe"

# 2. 命令行下载安装程序
Write-Host "正在下载 Python $version 安装包..." -ForegroundColor Cyan
Invoke-WebRequest -Uri $installerUrl -OutFile $installerPath

# 3. 静默安装关键参数执行
Write-Host "开始静默安装并配置环境..." -ForegroundColor Cyan
$installArgs = "/quiet InstallAllUsers=1 PrependPath=1 Include_pip=1 Include_launcher=1 AssociateFiles=1"
Start-Process -FilePath $installerPath -ArgumentList $installArgs -Wait

# 4. 清理临时下载文件
Remove-Item -Path $installerPath -Force
Write-Host "Python $version 安装完成!" -ForegroundColor Green
静默安装参数技术含义:
  • /quiet:不弹出图形向导对话框,完全后台无人值守运行。
  • InstallAllUsers=1:系统级安装,释放至 Program Files 目录。
  • PrependPath=1:将新版 Python 目录前置加入系统 PATH 环境变量。
  • Include_launcher=1:确保更新安装最新的系统级 py.exe 启动器。
Windows下怎么用命令升级Python版本
图 3:Windows 多版本 Python 存储体系与 PATH 路由优先级机制

六、关键步骤:升级后默认版本重定向与环境校验

许多开发者在完成安装后,在终端中重新输入 python --version,却发现终端依旧打印旧版本号,或者直接跳转打开了 Windows 应用商店。这通常由以下两个常见原因引起:

1. 使用 py.exe 绑定全局默认版本(推荐方案)

通过环境变量 PY_PYTHON,可以直接告知 Windows 启动器默认调用哪个版本,而无需频繁修改复杂的系统 PATH 字符串:

PowerShell设置默认Python版本
# 永久设定当前用户默认 Python 为 3.12
[Environment]::SetEnvironmentVariable("PY_PYTHON", "3.12", "User")

# 或者使用系统自带的 setx 工具
setx PY_PYTHON 3.12

设置完毕后,重新打开一个新的 PowerShell 窗口,执行验证:

PowerShell验证默认版本
py --version

若此时输出为 Python 3.12.x,则代表全局调度器已经成功重定向。

2. 排查并关闭“应用执行别名”冲突(0字节劫持问题)

Windows 10/11 默认将 %LOCALAPPDATA%\Microsoft\WindowsApps 加入了 PATH,当该路径排在新安装的 Python 目录前面时,输入 python 会触发微软商店引导。

解决方法:

  • 打开 Windows“设置” -> “应用” -> “高级应用设置” -> “应用执行别名”;
  • 在列表中找到“应用安装程序 (python.exe)”与“应用安装程序 (python3.exe)”,将其开关全部关闭。

3. 手动优化 PATH 变量优先级顺序

若依然希望直接敲击 python 命令运行新版,需要保证新版本路径排在最前面:

PowerShell (Admin)检查系统 PATH
# 查看当前 Path 包含的 Python 条目
$env:Path -split ';' | Select-String "Python"

确保 C:\Program Files\Python312\ 和 C:\Program Files\Python312\Scripts\ 处于任何旧版本(如 Python310)之前。

七、依赖迁移与旧版本清理收尾

新版本安装并成为默认解释器后,需要将开发依赖项导入新环境,并按需卸载废弃旧版本。

1. 升级新版本内置的 pip 包管理器

PowerShell升级新版 pip
py -3.12 -m pip install --upgrade pip

2. 从备份清单中恢复三方依赖库

PowerShell迁移安装扩展包
# 批量还原第三方包
py -3.12 -m pip install -r "$HOME\Desktop\requirements_backup.txt"
排错建议:部分带有 C/C++ 扩展编译的原生模块(如旧版本专有的特定二进制轮子)可能尚未提供针对 Python 3.12 的 Pre-built Wheel。如果在安装过程中报错,建议去掉固定的版本号(如将 package==1.0.0 调整为 package>=1.0.0),让 pip 自动拉取兼容新 Python 内核的发布包。

3. 干净卸载过期的旧版本

当确认新版本运行稳定且所有项目依赖就绪后,可以通过命令行将旧版本干净移除:

PowerShell卸载旧版
# 若原先通过 winget 安装旧版
winget uninstall Python.Python.3.10

# 校验卸载后的版本列表
py -0p
Windows下怎么用命令升级Python版本
图 4:Windows 命令行升级 Python 方案全景对比与决策矩阵

八、三种升级方案综合对比与常见问题排查

对比维度 winget 方案(官方推荐) Chocolatey / Scoop 方案 PowerShell 静默安装方案
前置依赖 无(Win10 1809+ / Win11 自带) 需提前安装 choco / scoop 客户端 无(系统原生内置 PowerShell)
适用网络 需直连微软与 Python 官方 CDN 依赖对应的第三方源访问 可配置内部网络镜像源或离线包
命令复杂度 低(标准单条命令) 极低(单条 update 指令) 中(需指定静默参数或编写短脚本)
版本并存管理 优秀(与 py.exe 紧密配合) 根据包策略可能覆盖或 Shim 隔离 极佳(参数完全可控)
适用场景 个人日常开发机、现代办公系统 深度依赖包管理器工具链的工程师 批量部署、自动化运维、内网隔离主机

常见问题解答 (FAQ)

Q1:升级后在终端执行 python 提示“不是内部或外部命令”怎么办?
这是因为在安装时未勾选“添加环境变量”,或者未以管理员权限安装。此时可以直接使用系统常驻的启动器命令 py 代替 python,或者在 PowerShell 中以管理员权限执行 [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Python312;C:\Program Files\Python312\Scripts", "Machine") 补充路径。

Q2:为什么运行 winget upgrade 时提示找不到 Python 可升级项?
如果当前安装的旧版本(如 3.10)与目标版本(如 3.12)属于不同的大版本,在 winget 中它们被注册为不同的软件包 ID。此时不能使用 upgrade,而必须使用 winget install Python.Python.3.12 进行全新安装,随后根据本文第六节重定向默认启动器即可。

Q3:升级后原先的项目虚拟环境(venv)需要重新创建吗?
强烈建议重新创建。虚拟环境内部的解释器软链接和二进制文件是与创建时的 Python 版本严格绑定的。若升级了全局版本,应在对应项目目录下删除旧的 .venv 文件夹,使用新命令 py -3.12 -m venv .venv 重新构建虚拟环境并激活安装依赖。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。