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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM