Windows 上 py 和 python 显示不同版本的原因

在 Windows 命令行中,输入 py --versionpython --version 却得到两个不同版本,这是很多开发者都会遇到的困惑。

根本原因

pypython 是两个完全不同的命令:

  • py 是 Windows 官方的 Python 启动器。它会自动识别系统中所有已安装的 Python 版本,并默认使用最新版本。你可以通过 py -3.10py -3.8 来指定具体版本。
  • python 则是直接调用系统 PATH 环境变量中第一个找到的 python.exe。它并不关心你安装了多少个版本,只执行排在最前面的那个。

简单来说,py 负责版本管理,python 则完全依赖 PATH 的顺序。

你的具体情况

根据你提供的诊断结果:

  • py --list 显示系统中存在 3.10(默认)、3.93.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,可以调整环境变量顺序:

  1. 先执行命令查看 3.10 的真实路径:

    py -3.10 -c "import sys; print(sys.executable)"
    
  2. 将 Python 3.10 的目录(通常在 AppData\Local\Programs\Python\Python310)和它的 Scripts 文件夹,添加到系统 PATH 的最前面。

  3. 重启命令行窗口即可生效。

方案三:通过 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 命令 已经能很好地解决多版本管理问题。

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐