python2.X和python3.X在同一平臺下的切換技巧

python2.X和python3.X在同一平臺下的切換技巧

最近在本身的電腦上同時安裝了python2.7.11和python3.5.1html

在網上搜了一些答案,主要仍是參照《learning python》第五版裏的appendix B,以及官方文檔:Python Launcher for Windows,總結以下:python

從python3.3開始,安裝python的時候會自動安裝一個launcher,包含兩個程序:linux

py.exe for console programs  能夠運行.py文件程序員

pyw.exe for nonconsole (typically GUI) programs  能夠運行.pyw文件shell

它容許咱們在程序中提早聲明使用哪一版本的python(詳見方法一),或者能夠在command-line裏利用command-line argument來聲明python的版本(詳見方法二)。windows

在本文中咱們均使用以下的腳本(咱們把它命名爲script.py保存起來)來進行測驗:python3.x

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

方法一

咱們在script.py的第一行添加一行語句,以#!開頭(#!被稱做shebang,熟悉linux的程序員應該有所瞭解),改語句能夠有以下四種(效果都是同樣的):app

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

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

相關文章
相關標籤/搜索