zoukankan      html  css  js  c++  java
  • python2.X和python3.X在同一平台下的切换技巧

    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

  • 相关阅读:
    欧拉计划之题目7:找出第10001个质数
    DShow实现一个avi视频的播放(含有个人解释和注释)
    DirectX 9 SDK安装后在vs2010里编译BaseClasses出错问题解决方法
    C#内存占用大量资源的解决办法
    C#读写ini文件操作
    【Java】编程技术经典书籍列表
    【数据库_Mysql】查询当前年份的sql
    【数据库_Mysql】MySQL动态语句 if set choose where foreach trim
    【JavaScript】20款漂亮的css字体
    【数据库_Mysql】<foreach>标签在Mysql中的使用
  • 原文地址:https://www.cnblogs.com/an9wer/p/5564284.html
Copyright © 2011-2022 走看看