原文链接:http://www.juzicode.com/python-note-multi-version-python

老规矩先抛问题:

一台电脑上安装有多个Python版本、多套虚拟环境,如何在命令行快速启动对应的版本?

这里结论也先给出来,方便不想看水文的同学:

可以编写多个对应版本的批处理文件,在批处理文件中设置path变量,将对应版本的路径添加到path路径的最前面,这样要运行哪个版本或虚拟环境打开对应的批处理文件即可:

问题和结论讲完了,接下来聊下为什么可以这么做,下面的描述以运行Python解释器为例,同样适用运行pip安装第三方包。

在命令行输入“Python”时,命令行会去系统中查找名称为Python的可执行文件,通过计算机基础–Windows PATH变量、命令行、搜索路径中的描述,实际上会按照如下的优先级顺序查找Python可执行文件:

  • 1.从当前工作目录查找。
  • 2.环境变量系统PATH。
  • 3.环境变量用户PATH。

如果当前工作目录没有找到,则会到系统PATH变量和用户PATH变量中从前往后查找,这也是我们在安装Python的时候一般要求勾选“Add Python3.x to PATH”的原因。

但是当安装多个Python版本时,虽然所有的Python安装路径都添加到了PATH变量中,但是PATH变量的路径查找也有优先级:从前向后搜索。比如桔子菌的电脑里装了如下多种Python版本以及虚拟环境:

PATH变量的组织形式如下图所示:

在命令行输入“Python”时,系统会在PATH变量表示的路径中从前往后搜索Python可执行程序,在最前面的D:\Python\Python310下找到了Python可执行文件,所以执行的总是PATH变量中路径处于最前面的Python3.10,在这种情况下想要直接调用其他版本的Python是做不到的:

如果想在命令行里输入“python”直接调用Python3.8版本,可以通过修改PATH中路径的排序,将Python3.8的路径移动到所有其他Python版本路径的前面就行,但是这种方法在更换Python版本时,需要每次进入系统变量界面修改并且重启命令行。

当然如果要调用其他版本的Python,也可以切换到相应的安装目录下再运行Python,比如要调用3.8版本,就可以切换到3.8版本的安装目录下再运行“python”:

或者将Python的完整路径输入后再运行

前面这3种方法虽然能达到目的,但是稍显繁琐,每次都要切换路径或者输入完整路径,有没有更简便的方法呢?

答案是有的,请继续往下看……

仍然是从PATH变量入手,既然为了调用对应的Python,PATH变量每次都要修改,那是不是可以在每次启动Python前设置一次PATH变量,将需要调用的Python路径设置在PATH路径的最前面呢?答案是可行的:

从这里可以看到,直接调用python时,运行的是PATH路径中最前面的3.10,但是经过使用set命令将3.8版本的安装路径添加到PATH变量的最前面时,再次调用python,运行的就是3.8版本了。

这种方法修改PATH变量是临时的,不会真正地修改系统变量配置界面里的值,它不会影响到这台电脑上其他程序的运行,但是缺点是每次要调用其他Python版本时仍然要敲一次set命令才能生效。

每次输入set命令添加路径太过麻烦,可以将set命令放在一个批处理文件中,一个Python版本对应一个批处理文件,这样就可以免去输入set命令的麻烦,下面这个例子第1行set命令添加3.8版本python安装目录到PATH变量,第2行wt命令启动WindowsTerminal:

set path=D:\Python\Python38\Scripts;D:\Python\Python38;%path%
wt

如果没有安装wt,第2行也可以改成cmd启动系统自带的命令行:

set path=D:\Python\Python38\Scripts;D:\Python\Python38;%path%
cmd

这样对应不同的Python版本和虚拟环境,就可以有多个批处理文件,比如要启动3.8版本的Python,双击3.8版本对应批处理文件,然后在弹出的命令行下运行“python”,可以看到启动的是3.8版本:

-------分割线表示正文结束了--------

梦想是要有的,万一实现了呢

推荐阅读:

tesseract训练字体居然还有这种骚操作

新鲜上架的Python3.10,来个match-case尝尝鲜

你别耍我,0.1+0.2居然不等于0.3?

如何实现一个“万能”的调试打印函数

有了这款神器,什么吃灰文件都统统现形

一行代码深度定制你的专属二维码(amzqr)

桔子菌和超市老板田大爷的一次角色互换经历

来看看怎么用OpenCV解构Twitter大牛的视觉错觉图

用这个方法解决Python多版本共存问题,简单粗暴相关推荐

  1. 检测到python编程环境中存在多个版本_windows配置Python多版本共存

    windows配置Python多版本共存 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近Python开发蛮火的,三年前我的一个运维朋友就告诉我说Python语言将来会很火,当时 ...

  2. 几楼电路精灵——解决Cadence多版本共存

    解决Cadence多版本共存 1.前言 2.解决方法 1).用系统内置 2).用电路精灵一键搞定 3).用批处理打开 3.电路精灵下载 1.前言 在使用Cadence过程中,需要打开不同版本的brd文 ...

  3. python不同版本共存_多版本Python共存的配置方法

    同一台PC中,如果同时安装Python2和Python3环境,会在执行python命令时出现错误,操作系统会找到默认的配置进行执行.怎么样才能让python2和python3一起工作又互相不影响呢. ...

  4. Python 多版本共存问题 2

    正文共2550个字,预计阅读时间10分钟. 本文主要讨论 多种版本的 Python 模块的共存与调用问题,并尝试给出一种清爽的解决办法. 多种版本的Python module? 伴随 Python 逐 ...

  5. Python 多版本共存问题

    正文共2282个字,预计阅读时间10分钟. Python 3和Python 2? 自从 Python 发布新的版本 3 以来,就一直是开发者心中的一个纠结.由于 Python 3 并不完全兼容 Pyt ...

  6. note: This error originates from a subprocess, and is likely not a problem with pip.解决 python降版本tips

    ---可跳过--- 背景 本人在做一个学校的实训项目,任务是实现前端+摄像头+深度学习算法实现手写数字识别,由于底子实在不扎实,就只好在Github上找到两个项目,一个是Django和深度学习算法交互 ...

  7. Python多版本共存之pyenv

    2019独角兽企业重金招聘Python工程师标准>>> 经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2. ...

  8. python 多版本共存

    经常遇到这样的情况: 系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性: 系统自带的 Python 是 2.x,自己需要 Python 3.x: 此时需要在系统中安装 ...

  9. 解决python多版本环境下pip报错Fatal error in launcher: Unable to create process using问题

    在电脑上安装了多个python版本之后,执行pip2/pip3 list时会报错,因为python的主程序名称已被更改,导致找不到. 所以,只需要用python2 python3重新更新下pip程序即 ...

  10. python多版本共存 ubuntu_Linux下python3与python3的多版本共存

    python3已经出来有些许时候了,python3相比python2进行了大量的改进,包括语法,新的功能,还有优化.虽然很多库已经同时支持 python2和python3了,但是有些库仍然没有很好的支 ...

最新文章

  1. RYU控制器的学习笔记(三) 利用观察者模式通知app处理报文
  2. 429. N-ary Tree Level Order Traversal - LeetCode
  3. sqoop——将mysql数据库的数据表导入到hdfs上
  4. HDU - 5573 Binary Tree(思维+构造+二进制)
  5. C++:指针数组理解
  6. Java迭代器的一般用法
  7. 宽字符与Unicode
  8. php-fpm性能优化
  9. 拓端tecdat|R语言中多分类问题 multicalss classification 的性能测量
  10. SQLyog安装教程
  11. 新高考教师增值评价方式的再研究
  12. 是时候让《武林外传》教你反内卷了
  13. 微信推广二维码接口使用总结
  14. 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).
  15. 龙家贰少的MarkDown学习笔记
  16. gan 总结 数据增强_深度学习中的数据增强(下)
  17. 耀华仪表A9数据解析(C#)
  18. toi,atol,strtod,strtol,strtoul实现类型转换
  19. 修复typec otg数据线
  20. iOS——知乎日报小结

热门文章

  1. webpack-theme-color-replacer 路由跳转之后,样式丢失
  2. Windows 系统服务优化指南
  3. c语言中min函数的作用,min函数到底在哪个头文件里?
  4. python sphinx_Python Sphinx 生成简洁大方的文档
  5. Transform.rotation所见非所得
  6. 网站建设:网站安全检测工具
  7. CleanMyMac最新2020注册机
  8. 轻便提示插件tipTip
  9. ubuntu桌面图标不显示问题
  10. 学习uc/os-ii