python2.X和python3.X在同一平台下的切换技巧

最近在自己的电脑上同时安装了python2.7.11和python3.5.1

在网上搜了一些答案,主要还是参照《learning python》第五版里的appendix B,以及官方文档:Python Launcher for Windows,总结如下:

从python3.3开始,安装python的时候会自动安装一个launcher,包含两个程序:

py.exe for console programs  可以运行.py文件

pyw.exe for nonconsole (typically GUI) programs  可以运行.pyw文件

它允许我们在程序中提前声明使用哪一版本的python(详见方法一),或者可以在command-line里利用command-line argument来声明python的版本(详见方法二)。

在本文中我们均使用如下的脚本(我们把它命名为script.py保存起来)来进行测验:

	1>	import sys
2> print(sys.version.splict()[0]) #打印出运行该程序的python版本

方法一

我们在script.py的第一行添加一行语句,以#!开头(#!被称作shebang,熟悉linux的程序员应该有所了解),改语句可以有如下四种(效果都是一样的):

1.  #!/usr/bin/env python*

2.  #!/usr/bin/python*

3.  #!/usr/local/bin/python*

4.  #!python*

其中*是指python的版本,如果此处*是2,则会从我们电脑中安装的最新版的python2来运行该脚本。例如我的电脑中同时装了python2.5和python2.6,那么它会自动选择python2.6来运行脚本。如果此处*是3,也是一样的,会选择最新一版的python3来运行。

当然,如果我们把*指定成某一明确的python版本,那么launcher会直接使用此版本来运行该脚本,前提是该版本存在。例如在脚本开头添加#!python2.6,会直接用python2.6来运行脚本。

注意:

1.  只有以上四种情况可以在脚本开头用来声明python的版本。

2.  #!后面可以加上空格。

3.  如果没有使用以上四种方法的任何一种,会默认使用电脑中安装的python2.X的最新一版来运行脚本。

方法二

我们可以不用在脚本中的第一行提前声明使用何种版本的python,而是可以在command-line中使用py语句,加上command-line argument来切换python版本。

我们这里还是以script.py为例,在command-line中输入

	py -2 script.py

其效果和在脚本开头添加#!python2是一样的,我们也开始明确某一python版本,例如我们想使用python3.3

	py -3.3 script.py

以上两个例子中的-2和-3.3即为command-line argument。

注意:

方法一和方法二同时存在时,我们以方法二为准。

例如,我在script.py开头添加#!python2.7,而在command-line中输入py -3.5 script.py,那么launcher还是会用python3.5来运行该脚本。

总结

一旦安装pyton3.3以上版本,就会自动安装launcher,并且将py.exe和pyw.exe自动关联到windows registry(注册表),我们双击任何.py或者.pyw文件时都会使用相应的py.exe或者pyw.exe来执行。

一般不明确声明,都会默认使用电脑中安装的最新版的python2.X或者python3.X来运行。可以通过在command prompt(即DOS)中设置PY_PYTHON来暂时修改默认值(在powershell中设置无效)。至于永久修改默认值,我暂时还没细究,读者可以自行google。

之前我安装的是python2.7,在command-line中可以用python script.py来执行。在安装完python3.5之后,python script.py依然使用python2.7来执行。

本人尚在学习python中,本文是以我目前所掌握的知识来对launcher进行的理解。可能有所纰漏,还望读者指正。

另,转载本文请表明出处:http://www.cnblogs.com/an9wer/p/5564284.html

python2.X和python3.X在同一平台下的切换技巧的更多相关文章

  1. Redis - Windows平台下怎么切换db并且清理数据

    Redis 本身支持16个数据库(0~15),通过 数据库id 设置,默认为0.在Windows平台下可以通过启动redis-cli.exe来进入客户端,客户端默认连接数据库0,在客户端里可以输入各种 ...

  2. python2.7与3.5共存windows平台安装

    文:铁乐与猫 2018-3-18 周日 01.首先是安装python2.7: 官网下载 https://www.python.org 点击安装包进行安装 可以选择自定义的路径 将默认打x的[add p ...

  3. Python2.X和Python3.X的w7同时安装使用

    一.介绍 Python([ˈpaɪθən])是一种面向对象.解释型计算机程序设计语言.Python语法简洁.清晰,具有丰富和强大的类库. Python源代码遵循GPL(GNU General Publ ...

  4. 烂泥:python2.7和python3.5源码安装

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天在centos6.6安装ansible时,一直提示python版本不对,导致不能安 ...

  5. python2.7和python3共存

    python2.7和python3共存 原本装了python,玩nodejs的时候需要node-gyp来编译依赖,无赖这货需要python2.5<v<3.0,那就弄两个版本吧 转载自 ht ...

  6. 自动发布工具版本从python2升级成python3后遇到的种种问题(涉及paramiko,Crypto,zipfile等等)

    从在公司实习到正式入职,一直还在被同事使用的是我写的一个自动发布工具.该工具的主要功能是:开发人员给出需要更新的代码包(zip格式),测试人员将该代码包部署到测服,这些代码包和JIRA数据库里的项目信 ...

  7. 相比于python2.6,python3.0的新特性。

    这篇文章主要介绍了相比于python2.6,python3.0的新特性.更详细的介绍请参见python3.0的文档. Common Stumbling Blocks 本段简单的列出容易使人出错的变动. ...

  8. python2.x和python3.x的区别

    一.python2.x和python3.x中raw_input( )和input( )区别 1.在Python2.x中raw_input( )和input( ),两个函数都存在,其中区别为 raw_i ...

  9. 在Windows下同时安装Python2.x和Python3.x

    前言: Python现在是两个版本共存,Python2.x和Python3.x都同时在更新.但是Python2.x和Python3.x的区别还是很多的(以后我可能会写一篇文章列举一下Python2.x ...

随机推荐

  1. [汇编语言]-第二章DEBUG

    Debug查看CPU各种寄存器中得内容,内存的情况和在机器码级跟踪程序的运行. 1- 进入Debug xp 开始-运行 cmd 输入 debug 2- Debug功能 r 查看,改变CPU寄存器的内容 ...

  2. Eddy's digital Roots(九余数定理)

    Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  3. 浅析 JavaScript 的函数节流和去抖

    现代网页的实现上,会有很多交互上的优化,比如常见的 滚动加载 ,输入联想 等等.他们的实现思路很简单,以滚动加载而言,无非就是去是增加一个滚动的事件监听,每次滚动判断当前的元素是否已经滚动到了用户的可 ...

  4. Nginx 配置指令的执行顺序(九)

    紧接在 server-rewrite 阶段后边的是 find-config 阶段.这个阶段并不支持 Nginx 模块注册处理程序,而是由 Nginx 核心来完成当前请求与 location 配置块之间 ...

  5. hightchart or hightstock 格式Y数据

    hightchart or hightstock 格式Y数据,鼠标放在上面显示两位小数 方法一: tooltip: { shared: true, crosshairs: true , formatt ...

  6. C# 线程池异步调用

    许多应用程序使用多个线程,但这些线程经常在休眠状态中耗费大量的时间来等待事件发生.其他线程可能进入休眠状态,并且仅定期被唤醒以轮询更改或更新状态信息,然后再次进入休眠状态.为了简化对这些线程的管理,. ...

  7. Starling开发微信打灰机(二)

    上一篇中,已经把starling开发环境搭建好,那么现在开始写代码. 这一篇来完成打灰机的欢迎界面. 游戏素材下载 首先创建Asset.as来加载图片,声音和字体等资源,其中只有两张背景图是单独的图片 ...

  8. Opencv下图像对鼠标事件的响应

    直接上代码: //////////////////////////////////////////////////////////////////////// // // 该程序从文件中读入一幅图像, ...

  9. 在SQL Server中如何快速查找DBCC命令和语法?

    DBCC命令非常好用,但是命令很多语法就很多,如何快速记忆呢?是否都要背下来.其实不用,只要能知道每个命令的作用并且记住DBCC HELP命令就可以了. --查找所有的DBCC命令 DBCC  HEL ...

  10. Python学习入门基础教程(learning Python)--8.1 字典数据添加与删除

             1. 字典数据添加 这个很简单,像赋值那样一项项赋值即可.语法结构如下 dict_obj[key] = value 添加数据项示例如下 >>> d1 = {'cod ...