多版本 Python 在使用中的灵活切换
admin
2023-07-23 21:22:49
0

今天我们来说说在 windows 系统上如果有多版本的 python 并存时,如何优雅的进行灵活切换。

虽然 Python3 已经出来很久了,虽然 Python2 即将成为历史了,但是因为历史原因,依然有很多公司的老项目继续在使用着 Python2 版本(切换成本太高),所以大多数开发者机器上 Python2 和 Python3 都是并存的,本文主要说明这种情况下如何便捷的在 Python2 和 Python3 之间进行切换。

先说明下,本次我们不介绍 virtualenv,也不介绍 pipenv,因为这两个都是为了大型的 Python 工程做准备的,之后会单独文字进行说明。

本次是不借助外部工具,来实现快捷切换。其实也可以说是利用系统环境变量的逻辑来实现目的。

本次环境以 Windows 为例:

系统: Windows 7 x64
Python 版本:Python 3.4 和 Python 2.7

安装

首先安装好 Python3.4 和 Python2.7,安装包可以在这个地方进行下载:点击跳转。

设置环境变量

然后分别把对应版本的安装路径加入到系统环境变量中去:
多版本 Python 在使用中的灵活切换

新起一个 cmd 窗口验证下添加后的效果:

C:\Users>path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32
\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Python34;C:\Python27;

这时候我们直接在 cmd 输入 python,已经可以被识别了,但是识别的总是路径在环境变量中排前面的那个版本的 Python,比如目前从上图看 Python3.4 是排前面的,实际验证下看看:

C:\Users>python
Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
重命名主程序

然后我们分别把两个版本的 Python 主程序 exe 改下名,3.4 版本的改名为 python34.exe,2.7 版本的改名为 python27.exe:
多版本 Python 在使用中的灵活切换

再分别运行 python34 和 python27 试试:

C:\Users>python34
Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 20:20:57) [MSC v.1600 64 bit (AM
D64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

C:\Users>python27
Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

从上图可以看出,我们已经可以实现分别运行指定版本的效果了,如果执行脚本的话直接 python34 test.py 或者 python27 test.py 就行了。

但是每次执行脚本都加前缀是不是很累,如果有一个版本是我们常用的话,也可以通过修改文件后缀关联程序来实现默认关联,再需要特殊版本的时候再加上前缀就行,不过保险起见,还是一直带着吧。

补充说明

补充说明下,其实网上也有网友提供了其他两种方法:

使用 Python 自带的 py -2py -3 命令;
另一种和我上面说的类似,但是只重命名了其中一个版本的执行文件名;

如果机器只安装了两个版本的 Python,这几个方法确实是都可以解决的,但是因为我需要部分脚本支持 Windows XP (Python3.5 以后就不支持 XP 了),所以安装了 Python2.7、Python3.4 和 Python3.6 共三个版本的 Python,这样的话就只能把全部主程序文件都重命名了,而且这样解决的问题更彻底,一劳永逸。

再补充说明下,如果要针对不同版本的 Python 调用 pip,命令后如下(请把 requests 换成自己需要的包名):

python27 -m pip install requests
python34 -m pip install requests
python36 -m pip install requests

这样安装的依赖库就是在各个版本之间相互独立的。

好了,赶紧动手试试吧。当然,如果您有更好的建议,欢迎留言讨论。

本文原创发布于公众号「sylan215」,十年测试老兵的原创干货,关注我,涨姿势!

相关内容

热门资讯

鲁比奥:伊朗收费若成先例,将像... 据美国哥伦比亚广播公司(CBS)援引法新社报道,美国国务卿鲁比奥周四警告称,如果允许伊朗对通过霍尔木...
恐慌之下,有妈妈把纸尿裤塞进了... 6月22日下午两点,济南蝉声轰鸣。山东省第一医科大学附属省立医院门诊大厅里,人流如常。“我不回答。”...
凤凰连线在委华人:委内瑞拉首都... 在委内瑞拉连续强震之后,当地有大量房屋倒塌或受损,而首都加拉加斯的民众也都从建筑物中撤离,在户外避险...
1198.79亿元!宇通客车连... 6月24日,世界品牌实验室发布2026年《中国500最具价值品牌》榜单,宇通客车以1198.79亿元...
活力中国调研行|数据多跑路,居... 【大河财立方 记者 夏晨翔 洪昊旸 雄安新区报道】 儿童活动区里,家长正带着孩子嬉戏玩耍;图书馆里,...
公安部公布4起非法占用农用地典... 6月25日,公安部公布4起非法占用农用地典型案例,旨在依法严厉打击非法占用农用地犯罪,全力守护国家粮...
中关村发展集团原党委书记、董事... 2026年6月25日,北京市第一中级人民法院依法公开宣判中关村发展集团股份有限公司原党委书记、董事长...
大学生因电瓶燃爆,全身90%面... 6月25日,武汉大学生杜均浩被室友电瓶烧伤案刑事与民事部分已一审宣判。
商务部:中方不得不反制美方错误... 据凤凰卫视报道,针对中方将10家美实体纳入出口管制,并在政府采购中限制46家美企,中国商务部新闻发言...
美国画饼,欧盟走过场,立陶宛挑... 曾经冲在“反华”最前线的立陶宛,如今态度似乎发生变化。立陶宛外交部22日证实,叫停了与台湾当局的合作...