Windows系统PATH存在多个Python版本时如何选择默认可执行文件?
Windows/PowerShell 可执行文件查找优先级规则
Windows 系统和 PowerShell 查找可执行文件的规则如下:
- 首先查找当前工作目录下的匹配文件
- 之后按
$env:PATH环境变量的路径顺序从左到右依次遍历查找 - 对每个路径,按
$env:PATHEXT中预设的可执行扩展名顺序匹配(默认顺序为.COM;.EXE;.BAT;.CMD等) - 第一个匹配到的文件会被系统调用
补充:
where.exe <命令名>的输出顺序就是系统查找该命令的匹配顺序,第一个输出的就是默认会调用的文件。
你遇到的优先级异常原因:你的 PATH 开头的 C:\Python310\ 属于无效路径(你安装 Python 3.10 时选择了「仅为当前用户安装」,实际安装在用户目录 C:\Users\921479\AppData\Local\Programs\Python\Python310\ 下),系统遍历 PATH 时在该位置找不到 python.exe,继续往后遍历先命中了 C:\Program Files\Inkscape\bin\python.exe,而你实际使用的 Python 3.10 路径在更靠后的位置,所以不会被优先调用。
修改默认Python版本的方案
方案1:调整PATH顺序(最推荐,无副作用)
该方案不影响 Inkscape 命令行工具使用,全局生效:
- 按 Win+R 输入
sysdm.cpl打开系统属性,切换到「高级」选项卡,点击「环境变量」 - 在「用户变量」区域找到
Path项双击编辑,将C:\Users\921479\AppData\Local\Programs\Python\Python310\和对应的Scripts路径上移,放到C:\Program Files\Inkscape\bin路径之前 - 可以同时删除 PATH 中无效的
C:\Python310\、C:\Python39\相关路径,减少无效遍历 - 保存配置后重启所有 PowerShell 窗口即可生效,此时执行
where.exe python第一个输出的就是 Python 3.10 路径。
方案2:设置PowerShell专属别名(仅对当前用户PowerShell生效)
如果不想修改全局环境变量,可以单独给PowerShell设置别名:
- 打开 PowerShell,执行
notepad $PROFILE打开 PowerShell 配置文件,若提示文件不存在则选择新建 - 在配置文件中添加一行:
Set-Alias python "C:\Users\921479\AppData\Local\Programs\Python\Python310\python.exe"
- 保存后执行
. $PROFILE重载配置,后续所有 PowerShell 窗口调用python都会直接指向 Python 3.10,不受 PATH 顺序影响。
方案3:使用官方Python启动器(灵活切换多版本)
Windows 版 Python 会默认安装全局 py.exe 启动器,优先级高于PATH中的普通可执行文件:
- 临时调用指定版本可直接执行
py -3.10 - 要设置默认启动版本,在当前用户目录(
C:\Users\921479\)下新建py.ini文件,写入以下内容:
[defaults] python=3.10
后续直接执行 py 就会默认启动 Python 3.10,还可以通过 py -2、py -3 灵活切换不同大版本。
内容的提问来源于stack exchange,提问作者user32882
相关产品推荐
相关产品推荐

