关于cmd输入python查看版本号与安装版本不一致的奇怪现象

系统变量与用户变量引发的一系列惨案

今天无意中发现一个奇怪的现象,我在 cmd 中输入 python 查看版本号时,发现跳出来的版本号居然是 python2.7 ,我安装的明明是 python3.7 的版本,这可真是奇了个怪啊!在这里插入图片描述
我第一反应就是去查看环境变量。看了眼用户变量,没毛病呀!排在最前面的就是 python3.7!
在这里插入图片描述
我又去看了眼系统变量

.;%JAVA_HOME%\bin;E:\Node.js;E:\Git\Git\cmd;C:\Users\yusael.atom\packages\uncrustify;E:\Matlab2014b\runtime\win64;E:\Matlab2014b\bin;E:\Matlab2014b\polyspace\bin;C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin;;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\wbem;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon;E:\GoLand\Go\bin;E:\emacs\bin;

我看了好几遍,我确定这里根本没有出现 python 这个单词!

不信邪的我,又在命令行试了好几遍,发现出来的都是 python2.7 。那这究竟是什么原因呢?

以下是我思考问题,解决问题的过程,感觉这个问题还挺有趣,特地记录下来
我回归理性思考,电脑不会无缘无故整出个 python2.7 来,必然是哪个环境变量出了问题。于是,我删除了用户变量中的所有 python3.7 环境变量。

再次去命令行查看,发现依旧显示2.7版本。

好!那就确保用户变量没有用上,此时,困扰了我好久但是没有去解决的一个问题,我终于准备去解决了,系统变量和用户变量究竟有什么区别? 这个问题自从一开始学习 java 配置环境变量就开始困扰我,今天终于知道了他们的区别!

简而言之,系统环境变量,就是对全部用户起作用;而用户环境变量,仅仅对当前用户起作用。 更重要的一点是: 首先检索的是系统变量,在系统未完成下,是不会执行用户变量的。

由此可见,系统变量的优先级高于用户变量。

那么便没有问题了,我删除了作为用户变量的 python3.7,但是 cmd 中 python 指令仍然有效,说明肯定有某个 python2.7 环境变量藏在了系统变量中。但是字面上的确没有 python 这个单词啊!

好!那就搜索一下吧!
在这里插入图片描述
我打 python 搜出来的全是关于 python3.7的,因此我才以为电脑上没有装过 python2.7。

然后我打了个 2
在这里插入图片描述
我勒个擦!居然真的出现了!?看来我的电脑真的有着 python2.7 ,并且它的优先级高于我的 3.7,虽然不是什么大问题,但是我很好奇它究竟藏在哪里。

好!那就这样做吧。
在这里插入图片描述
让我们来看看这个小可爱究竟藏在哪!
在这里插入图片描述
啊咧?居然在 emcas 中。emcas 是我同学装在我电脑上的,我并没有很在意过这个软件。没想到居然上演了一出偷天换日。我立马在系统变量中把 emacs 给删除了试试,果真如此啊!
在这里插入图片描述
现在既然知道问题出在哪里了,那问题就解决了:我把用户变量中的 python 转移到了系统变量中去,并且放在了 emacs 之前,使得它的优先级更高,这样 cmd 里运行出来便是 python3.7 了。

问题完美解决!这次问题主要让我明白了系统变量用户变量的区别,最重要的即系统变量的优先级高于用户变量。

或许有人会想,为什么这么无聊的问题还要发个博客记录下来?

不管问题多么细微,多么不足道,这终究是我思考探索的一个过程,或许哪一天某位道友点进这篇文章,看到这里,眉头一皱,稍微一顿,然后会心一笑,心里想着:这篇文章解决了我当时觉得很奇怪又懒得思考的一个问题呢~

仅此记录~

### 如何在CMD中切换版本Python 为了能够在Windows系统的命令提示符(CMD)中顺利切换同的Python版本,通常有几种方法来实现这一目标。 一种方式是在命令行里直接调用特定版本的解释器名称。例如,在安装了多个Python版本的情况下,可以直接通过指定版本号的方式启动对应的解释器,像`python3.6` 或者 `python3.8`这样的指令就可以用来启动相应的大致版本[^1]。 对于那些希望简化操作流程的人来说,设置别名(alias)也是一种错的选择。虽然这种方法更常见于Unix-like系统(如Linux和macOS),但在Windows上也可以借助第三方工具或者修改注册表达到类似的效果。比如可以通过创建批处理文件(.bat),其中定义好对应路径下的Python可执行文件位置,从而实现在CMD中快速访问所需版本Python解释器[^3]。 另外还有一种更为直观的方法就是利用环境变量配置。当环境中存在多个Python版本时,默认情况下输入`python`会触发第一个被找到的解释器实例;但是,如果想要强制使用某个具体版本,则可以在命令前加上完整的路径指向该版本的位置,或者是调整PATH顺序让优先级更高的版本先被识别到。此外,还可以考虑安装并使用py launcher (py.exe), 它允许用户简单地通过`py -2`, `py -3.x`等形式轻松选择要运行的具体Python版本[^4]。 最后值得注意的是,针对pip这类包管理工具的操作同样支持多版本共存模式。只要确保每次调用pip的时候都指定了正确的Python解释器版本,就会影响其他已安装库的状态。这可以通过显式地提供完整路径给pip命令或是采用上述提到的各种手段间接完成[^2]。 ```batch @echo off rem 设置临时环境变量以便当前session内生效 set PATH=C:\Path\To\PythonVersion;%PATH% python --version ```
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌宅鹿同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值