安装 python 时疑似未勾选自动添加到 PATH 环境变量,导致 cmd 窗口无法正确识别 python 指令,而是会唤起微软商店,推广其 python 应用(版本:Windows 11 23H2)。
唤起微软商店的罪魁祸首
经搜索得知(参考:windows11执行python没有任何反应或拉起应用商店的解决办法)问题在于微软商店已经抢先“注册”了环境变量,也就是有个假的“python”,该变量值放在了用户变量里面(右键“此电脑”-> 属性 -> 高级系统设置 -> 环境变量):
(注:更改完变量值后要点击“编辑环境变量”界面的“确定”,完了之后还要点击“环境变量”界面的“确定”,即编辑界面确定后还需在总览界面点一次确定,才能成功更改变量值)
本着不轻易删除自带变量的思想,就需要考虑如何让 python 路径的变量值优先级高于这个“C:\Users\10653\AppData\Local\Microsoft\WindowsApps”。在这里也产生了疑问,用户变量和系统变量,到底该设置哪一个,他俩又有什么区别呢?
用户变量和系统变量区别
在 CSDN 上搜到的博客说:
“有的时候我们会看到在用户变量和系统变量中都存在某一个环境变量,比如path,那么path的值到底是用户变量中的值还是系统变量中的值,或者两者都不是呢?答案是两者都不是。path变量的值是用户变量中的值与系统变量中的值的叠加。“
”系统环境变量,对所有用户起作用,而用户环境变量只对当前用户起作用。”
(参考:windows 用户变量和系统变量的区别)
这里还是有点含糊,经过进一步搜索得:一般而言,用户变量优先级大于系统变量优先级,但是对于 path 而言,系统变量的优先级会大于用户变量。该博主也写到,对于除 path 的其他变量而言,用户变量的值会覆盖系统变量的同名值。(参考:windows下用户变量和系统变量的优先级)
自行验证如下,打印 path,仔细比对,将发现打印值是系统变量里的值后加上用户变量里的值:
但是打印另一个变量 TMP 的时候,如下面两张图所示,用户变量的值确实覆盖了系统变量的值:
结合其他博主自设变量名和变量值进行验证的结果(参考:windows下用户变量和系统变量的优先级),可以得出最终结论:
① 一般而言,用户变量优先级大于系统变量优先级,用户变量的值会覆盖系统变量的同名值。
② 对于 path 而言,系统变量的优先级会大于用户变量,用户变量的值会跟在系统变量后面。
在用户变量或系统变量里添加 python 路径
如此看来,方法无外乎:①在用户变量里添加 python 的相应路径,但位置要比 WindowsApps 的靠前;②直接在系统变量里添加 python 的相应路径。
方法一. 在用户变量中 WindowsApps 之前添加:
命令行窗口执行 python 成功:
方法二. 直接在系统变量里添加:
同样成功:
为什么要添加 python 的 Scripts 文件夹路径?
经搜索得知,在 Windows 系统中,当我们通过 pip 安装包时,这些包通常会安装在 Python 安装路径下的 Scripts 文件夹中,如果不添加此文件夹到环境变量中,命令行中使用 pip 安装的包将无法直接调用。(参考:windows python 为什么环境变量要加script的路径)
版权归原作者 greybird- 所有, 如有侵权,请联系我们删除。