Windows 上 py 和 python 显示不同版本的原因
在 Windows 命令行中,输入py --version和python --version却得到两个不同版本,这是很多开发者都会遇到的困惑。
根本原因
py和python是两个完全不同的命令:
- py是 Windows 官方的 Python 启动器。它会自动识别系统中所有已安装的 Python 版本,并默认使用最新版本。你可以通过
py -3.10或py -3.8来指定具体版本。 - python则是直接调用系统 PATH 环境变量中第一个找到的
python.exe。它并不关心你安装了多少个版本,只执行排在最前面的那个。
简单来说,py负责版本管理,python则完全依赖 PATH 的顺序。
你的具体情况
根据你提供的诊断结果:
py --list显示系统中存在3.10(默认)、3.9和3.8三个版本。where python指向C:\Users\11390\application\python\python.exe,这是一个 Python 3.8 的安装目录。- 该目录被添加到了 PATH 环境变量中,导致直接输入
python时总是调用 3.8 版本。
而py启动器不受 PATH 影响,因此能正确使用最新版本。
解决办法
以下是几种实用方案,根据你的需求选择即可。
方案一:统一使用 py 命令(最推荐)
以后直接用py代替python,这是最干净的做法:
py # 默认使用最新版本(当前为 3.10) py -3.10 # 指定使用 3.10 py -3.8 # 指定使用 3.8 py -m pip install 包名方案二:修改 PATH,让 python 指向新版本
如果你希望直接输入python时也能使用 3.10,可以调整环境变量顺序:
先执行命令查看 3.10 的真实路径:
py -3.10 -c "import sys; print(sys.executable)"将 Python 3.10 的目录(通常在
AppData\Local\Programs\Python\Python310)和它的Scripts文件夹,添加到系统PATH的最前面。重启命令行窗口即可生效。
方案三:通过 py.ini 设置默认版本
想让py命令默认固定使用某个版本,可以创建配置文件:
在路径C:\Users\你的用户名\AppData\Local下新建文件py.ini,内容如下:
[defaults] python=3.10保存后,py将默认启动 3.10 版本。
方案四:使用虚拟环境(项目推荐做法)
对于具体开发项目,建议为每个项目创建独立虚拟环境:
py -3.10 -m venv 项目名 cd 项目名 Scripts\activate这样可以为不同项目锁定不同 Python 版本,避免全局冲突。
方案五:移除不再需要的旧版本
如果确认不再使用 Python 3.8,可以直接从 PATH 中删除C:\Users\11390\application\python这个路径。这样python命令就会自动指向其他版本。
根据使用习惯选择合适方案即可。大多数情况下,统一使用 py 命令已经能很好地解决多版本管理问题。