多版本Python在使用中的灵活切换

  

今天我们来说说在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>路径
  路径=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, 2015年12月20日,20:20:57)(MSC v。1600 64位(我
  D64)] alt="多版本Python在使用中的灵活切换"> 

  

再分别运行python34和python27试试:

  
 <代码> C: \ Users> python34
  Python 3.4.4 (v3.4.4:737efcadf5a6, 2015年12月20日,20:20:57)(MSC v。1600 64位(我
  在win32 D64)]
  类型“帮助”、“版权”、“信用”或“许可证”获得更多信息。
  在在在
  
  C: \ Users> python27
  Python 2.7.14 (v2.7.14:84471935ed, 2017年9月16日,20:19:30)(MSC v。1500 32位
  在win32 tel)]
  类型“帮助”、“版权”、“信用”或“许可证”获得更多信息。
  在祝辞祝辞 
  

从上图可以看的出,我们已经可以实现分别运行指定版本的效果了,如果执行脚本的话直接<代码> python34测试。py> python27测试。py>   

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

  
补充说明
  

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

  
  

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

     

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

  

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

  
 <代码> python27 - m pip安装请求
  python34 - m pip安装请求
  python36 - m pip安装请求 
  

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

  

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

  
  

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

  

多版本Python在使用中的灵活切换