• 1
  • 1
分享
  • 【原创】多版本 Python 在使用中的灵活切换
  • sylan215 2019-01-25 10:42:02 字数 2112 阅读 2045 收藏 1

今天我们来说说在 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,安装包可以在这个地方进行下载:点击跳转

设置环境变量

然后分别把对应版本的安装路径加入到系统环境变量中去:

新起一个 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:

再分别运行 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

这样安装的依赖库就是在各个版本之间相互独立的。
好了,赶紧动手试试吧。当然,如果您有更好的建议,欢迎留言讨论。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 小程序测试环境小程序一般会准备三个环境:开发版访问测试环境;体验版访问预发环境,连的是生产的地址,白名单人员可见;正式版访问生产环境,所有人可见共同点是:体验版和正式版都是生产环境的数据;不同点是:体验版只有加入白名单的人可见,正式版就是所有用户可见;小程序测试注意点:更新版本后最好杀一下微信/支付宝进程,不然有可能拿不到微信/支付宝信息,导致有些功能报错;小程序跳转层级有限制,最好每次测试页面都试一下3-5层的跳转,看需求对应改进;考虑有蒙层的场景下,关闭蒙层之后,button是否失去焦点;每次出现异常提示,先自己检查一下环境,别急着找开发,减少大家的工作量。测试点:主要测试点:权限测试-授...
            12 12 3640
            分享
          •   OpenAI 今天宣布与"常识媒体"(Common Sense Media)建立合作伙伴关系。"常识媒体"是一家非营利性组织,负责审查和评定各种媒体和技术是否适合儿童使用。希望借此通过与致力于减少科技和媒体对儿童、学龄前儿童和青少年伤害的组织合作,赢得家长和政策制定者的信任。  OpenAI 首席执行官 Sam Altman 表示,作为合作关系的一部分,OpenAI 将与 Common Sense Media 合作,根据 Common Sense 的评级和评估标准,在 OpenAI 的 GPT 市场 GPT Store 上策划"家庭友好型&...
            0 0 927
            分享
          • 移动智能设备已成为我们日常生活的一部分,我们比以往任何时候都更加依赖它们。随着 5G 在不久的将来的出现,用户利用智能手机和移动数据提供的潜力的方式将是惊人的。越来越多的需求都会转移到移动设备上实现。拥有一个响应式网页设计,可以更快、更高效地在众多设备上运行,这是组织面临的挑战。这里重要的是通过严格的测试确保您的网站提供统一的体验。在本文中,我们将详细了解移动 Web 测试的方法、不同的测试策略以及可以减轻测试过程复杂性的工具。响应式网页设计对于许多人来说,响应式这个词并不新鲜!然而,随着我们多年来移动用户的惊人增长,响应式设计已成为任何企业的关键。它使响应式测试成为绝对必要的。响应式网页设计...
            0 0 928
            分享
          • 一、自动化简介1、自动化测试概念:自动化的概念是一个动态发展过程。过去,人们对自动化的理解或者说自动化的功能目标是以机械的动作代替人力操作,自动地完成特定的作业。2、什么样的项目适合做自动化测试:一般情况下,只要满足如下三个情况就可以开展自动化测试软件需求变更不频繁、项目周期较长、自动化测试脚本可重复使用3、python+selenium自动化测试环境搭建步骤python+selenium自动化测试环境包括四个部分:python、selenium、chrome谷歌浏览器、chrome谷歌浏览器驱动。其中浏览器也可以是火狐,IE等。目前自动化的主流浏览器还是chrome谷歌浏览器和火狐浏览器(1...
            0 0 1663
            分享
          •   科兴园,周一。  “张霖,你那个新功能测完了吗?”  刘毅没有选择企业微信私信,而是直接走到张霖面前。  “刘哥,已经测完了。”张霖放下手头的工作,补充道:“这个功能上周五就已经测完了,没来得及跟你说。”  “嗯,bug多吗?”  “emm...还挺多的, 有大概200多个bug。”  “200多...现在bug都修完了吗?”  “对,今天上午都回归完了,也没有剩余bug。”  “好,那你把这个功能的测试报告写一下,然后发个邮件。”刘毅解释道:“在我们项目组,每个版本比较重要的功能,测试完成后都需要写份测试报告,然后走邮件。”  “主要目的是让项目组知道功能的测试情况,特别是上面领导比较关...
            0 0 550
            分享
      • 51testing软件测试圈微信