问题
问题标签:windows, win11, python, pyenv安装python, 命令行执行python, 打开商店应用
在win11下,通过pyenv成功安装了python(检查系统的path变量,包括了%pyenv%/pyenv-win/shims,并且shime目录下有python执行文件)。
然而,在commadline或powershell中,输入python命令,打开的是商店应用,而不是期待的进入交互式REPL会话。
处理方法
python命令打开了商店链接,这是因为有个系统定义的python命令有更高执行优先级,并且指向了商店。 关闭这个系统定义的命令,就能正常执行pyenv指定的python。
关闭方法
通过以下步骤关闭系统定义的python快捷命令。 搜索“app alias” -> 在结果中点击“manage app execution aliases” 打开设置 -> 关闭python/python3 alias
关闭后的检查
`
C:>python -V
Python 3.8.5
C:>where.exe python
C:\Users\leon.pyenv\pyenv-win\shims\python
C:\Users\leon.pyenv\pyenv-win\shims\python.bat
C:>
`
原因探索
windows的python快捷命令的说明
官方说明链接:learn.microsoft.com/zh-cn/windo…
- 这项设置,会在 %User%\AppData\Local\Microsoft\WindowsApps目录下生成对应的python.exe和python3.exe文件
- 其他安装程序可能以低于内置快捷方式的优先级添加的python
- 该目录是系统path的目录。
- 通过pyenv安装的python,是增加到用户path里面。
- 用户执行环境中,完整的path是系统path后面追加用户path这样的合并方式,也就是用户path在搜索路径的后面部分,按这个顺序,被执行的是WindowsApps下的python而不是pyenv安装的。 通过关闭alias,WindowsApps下的python/python3会被删除。执行python命令时,就会找到在用户path中的执行文件了
其他尝试
- 也可以直接修改系统path,将%pyenv%/pyenv-win/shims加到最前面,这样最先被搜索到的就是pyenv安装的python
- 直接到%User%\AppData\Local\Microsoft\WindowsApps目录删除python.exe和python3.exe
- 删除后,windows的alias管理界面依然显示python/python3快捷方式时激活状态,会造成界面和实际的不一致
- 直接使用微软商店安装python
总结
- pyenv安装的python在路径中优先级较低(在用户path,低于系统path)
- 要正确执行python,需要关闭windows的alias定义的python快捷入口