先确认py.exe是否安装:运行where py,若无输出则未安装;已安装但失效需检查注册表HKEY_CURRENT_USER\Software\Python\Launcher\DefaultVersion等键值、Windows应用执行别名、PATH顺序及PowerShell执行策略。
py 命令无效,先确认 Windows Python 启动器是否真的装上了
Windows 上 py 命令来自独立组件「Python Launcher」,它和 Python 解释器本身不是一回事。即使你手动下载安装包并勾选了「Add Python to PATH」,py 也可能根本没装——尤其是通过 Microsoft Store 安装、或某些精简版安装器(如某些企业打包版)时,启动器常被跳过。
验证方式很简单:在 CMD 或 PowerShell 中运行
where py
如果返回空(无任何路径),说明系统里压根没有 py.exe;如果报错「INFO: Could not find files for the given pattern」,也是同义。
- 去官网下载标准 CPython 安装包(python.org/downloads),安装时务必勾选「Install launcher for all users」(默认是勾选的,但某些自定义安装流程会取消)
- 不推荐用 Microsoft Store 版 Python —— 它自带的
py启动器行为不稳定,且无法控制安装路径和关联逻辑 - 已安装但
where py找不到?检查C:\Windows\py.exe是否存在。若不存在,重装即可;若存在却不可用,可能是权限或系统策略拦截(见下一条)
py 命令能运行但打不开 Python,检查文件关联是否被篡改
py 命令本质是调用注册表中关联的 Python 版本。如果它执行后直接退出、报错「No Python installation found」,或弹出应用商店,大概率是注册表项被破坏或覆盖。
关键注册表路径是:
HKEY_CURRENT_USER\Software\Python\Launcher\DefaultVersion
和
HKEY_LOCAL_MACHINE\Software\Python\Launcher\InstallPath
- 用
regedit打开注册表,确认上述路径存在,且DefaultVersion的值为类似3.13或3.13-64的有效版本标识 - 如果
InstallPath指向一个已卸载或移动过的 Python 目录,手动修正为当前 Python 安装根目录(如C:\Python313) - 常见干扰源:某些国产软件管家、杀毒工具、甚至 VS Code 的 Python 插件会静默修改这些键值,建议关闭这类工具后再检查
py 能运行但 python 仍跳转应用商店,PATH 和别名冲突要一起清
即使 py 正常,python 命令仍可能被 Windows 应用商店“劫持”——这不是 PATH 问题,而是系统级应用执行别名(App Execution Aliases)在作祟。
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
运行以下命令确认是否中招:
where python
如果输出包含类似 C:\Users\XXX\AppData\Local\Microsoft\WindowsApps\python.exe 的路径,且排在你真实 Python 路径前面,就坐实了。
- 打开「管理应用执行别名」(Win + S → 输入该词 → 回车),把
python.exe和python3.exe两个开关设为 Off - 再编辑系统环境变量
PATH,把你真实的 Python 安装路径(如C:\Python313)和Scripts子目录(如C:\Python313\Scripts)加到最顶部,确保优先于WindowsApps - 改完不用重启电脑,但必须关掉所有已打开的 CMD/PowerShell 窗口,新开一个再试
python --version
py 命令在 PowerShell 中失效,注意执行策略限制
PowerShell 默认启用严格执行策略(ExecutionPolicy),而 py 启动器部分功能依赖脚本代理机制。如果你在 PowerShell 中输入 py 无反应或报错「无法加载文件」,很可能是策略阻断。
临时验证方法:
Get-ExecutionPolicy -List
查看 CurrentUser 或 Process 级别是否为 Restricted。
- 临时绕过(仅当前会话):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force - 不建议全局禁用策略,更稳妥的做法是:坚持用 CMD 运行
py,或统一使用py -i启动交互式解释器(它走的是二进制路径,不受脚本策略影响) - Miniconda/Anaconda 用户注意:它们自带的 PowerShell 初始化脚本会自动处理策略,但原生 Python 安装包不会
真正麻烦的从来不是「没装对」,而是「装了但被多层机制覆盖」——Windows 应用别名、注册表关联、PowerShell 策略、PATH 顺序,四者叠加时,单查一个地方永远不够。