惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
MyScale Blog
MyScale Blog
A
About on SuperTechFans
博客园_首页
B
Blog RSS Feed
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
I
InfoQ
罗磊的独立博客

阿猪的博客

如何使用CNB构建Hexo项目并部署到腾讯云COS 好坑爹!派息后买入的股票怎么也扣股息税? 游哈尔滨 跨年往事 安装Ta-Lib时报错"Could not build wheels" 网站被恶意镜像了该怎么办 延迟退休正式到来!来看看有什么规定 我的基金怎么就被强制卖出了? Hexo-AlgoliaSearch插件报错“Error has occurred during indexing posts” 找工作避坑不完全指南 办理信用卡应该注意什么 华为Pad开启了“共享至电脑”,但是Windows下无法正常访问 webdriver-manager报错一例 习大大2024年新年贺词 号外!号外!Twikoo可以直接屏蔽垃圾评论啦! 如何将Coding的代码仓同步到Github 博客被攻击了 华为Pad开启了“共享至电脑”,但是Ubuntu下无法正常访问 如何恢复Etcher刻录过的U盘 如何在Ubuntu下快速切换网络代理状态 在腾讯云函数中使用Pandas报错`No module named 'numpy.core._multiarray_umath'` 对空的DataFrame使用apply方法未得到预期结果 SQLite中使用关键字作为列名称导致报错 Logging模块重复输出内容的原因及解决方法 如何在Selenium中保持网站的登录状态 如何下载与Chrome浏览器的版本相匹配的ChromeDriver 如何下载旧版本Python的安装包 如何为不同的Python项目自动选择不同的解释器 使用腾讯云函数搭建Web站点 WordPress CORS问题一例
Windows无法从环境变量中找到Python的正确位置
阿猪 · 2024-01-15 · via 阿猪的博客

  本文介绍一例由Windows的“应用执行别名”引起的环境变量冲突。

一、问题场景

  上个月给Surface重装了一次操作系统。因为之前Python安装在非系统盘,安装后的程序文件都还在,所以阿猪不打算去Python官网下载Windows Installer进行重新安装,而是继续使用原来留下来的程序文件。

  打开CMD,将当前路径切换到之前安装Python的根目录,然后运行python.exe,可以正常显示Python的信息,说明Python是正常的。按理说,只需要手工编辑环境变量,为path这个变量新建一条记录,写入Python的路径就可以正常使用了。

  但是偏偏出了幺蛾子,不起作用。一些靠环境变量来寻找Python的脑残程序提示未安装Python,在CMD中直接运行python命令会跳转到Windows应用商店的Python下载页面。

二、原因

  经过一番研究,最终发现罪魁祸首是Windows的“应用执行别名”。按照阿猪的理解,它相当于一个专门针对Windows应用(即Windows应用商店版的程序)的“环境变量”或者“快捷方式”管理程序。

  在Windows左下角的“运行”或者“搜索”框中输入`管理应用执行别名`并按下回车键,就可以打开“管理应用执行别名”的界面,我们可以看到有两行分别是“python.exe”和“python3.exe”,并且处于开启状态。当处于开启状态时,Windows就会向`%USERPROFILE%\AppData\Local\Microsoft\WindowsApps`这个目录添加一个相同名字的文件,它的作用相当于一个快捷方式。

  在Windows环境变量的path这个变量中,%USERPROFILE%\AppData\Local\Microsoft\WindowsApps这条记录默认是在第一行的位置。所以我们当在CMD中运行python命令后,Windows会最先查看这个目录中是否存在python.exe这个文件。这就导致Windows看到管理应用执行别名创建的python.exe文件后,就会运行这个文件,并且终止继续在path变量的其他路径中寻找。

  当使用Python官网的Windows Installer或者从Windows应用商店安装Python时,管理应用执行别名可以正确识别出Python已经安装,运行python命令后可以正常启动Python。但是阿猪重装操作系统后,管理应用执行别名就会认为这台电脑还没有安装Python,并且打开Windows应用商店的Python下载页面。

三、解决方法

1、方法1:在“应用执行别名”中的关闭Python的别名设置

  直接在“管理应用执行别名”中关闭与Python有关的两个选项。这样Windows就会从%USERPROFILE%\AppData\Local\Microsoft\WindowsApps目录中删除同名的文件,从而可以确保可以继续在path变量的其他路径中寻找python.exe

2、方法2:修改环境变量中的顺序
将Python路径的那条记录向上移动到%USERPROFILE%\AppData\Local\Microsoft\WindowsApps这条记录之上。
道理是一样的,直接让Windows最先查找正确的路径,找到python.exe后自然就不会与%USERPROFILE%\AppData\Local\Microsoft\WindowsApps发生冲突了。

版权声明: 未经书面授权许可,任何个人和组织不得以任何形式转载、引用本站的任何内容。本站保留追究侵权者法律责任的权利。