在同一台電腦下如何進行 Python 2 與 3 的切換?

老師用的是 Python 2,但是我覺得自己現在學的話學個新點兒的比較好,2 和 3 據說差別還挺大,所以兩個版本都裝了,自己學的時候用 3,跑老師的程序時用 2。

我的電腦是 Win 7,現在系統默認調用的是 2,如果在執行前加上「C:python33python.exe」就可以調用 3,但是這樣太麻煩了,我在環境變數的 path 中加入「C:python33」也沒有效果,不知道還應該怎麼設置可以方便的進行切換?


Windows 上的 Python 自帶啟動器 py.exe,默認安裝到系統盤的 system32 文件夾里。如果你同時安裝了 Python 2 和 Python 3,用的時候直接在終端里輸入:

py -3

就是打開 Python 3 的 REPL,或者

py -3 example.py

就可以運行 Python 3 的腳本了。

同理,直接輸入

py example.py

使用 Python 2 來運行腳本。

詳細說明參見文檔 PEP 397 -- Python launcher for Windows


好吧,我來給題主介紹個神器,virtualenv,能創建若干相互隔離的python workspace,不僅能指定python版本,連packages都能不同。

擼過幾個開源的python項目別人都推薦用這個。

How to use Python virtualenv

Use different Python version with virtualenv


你可以把python3里的python.exe文件改名為python3.exe

這樣的話2和3的執行命令能夠分開了,也就能夠實現你切換的需要了


我提供一個辦法 首先裝一個軟體 Enthough Canopy, 這是有一個帶有各種科學計算python庫的發行版本,諸如panda,numpy 還有各種畫圖庫都內置了很方便。

Canopy中還集成了Pyhton包的在線升級和管理系統,很是方便。由於是商業級別的,Canopy的性能和穩定性很好。也提供免費的free版本和學術版本(用於教育科研也是免費的)。

以前叫EPD,現在改名叫Canopy。Canopy是第一個將Ipython升級到2.3.0的發行版;MatPlotLib已升級到1.4.2;NumPy 1.8.1;Scipy 1.2.0. 但是它主要是追求性能和穩定性,所以不能指望所有的安裝包都是最新的。

如果你有學校郵箱的話,可以免費用商業版一年,如果沒有也無妨,免費的庫也很好用,而且題目本身問的是如何2.7和3.5同時安裝,所以免費版就夠了。canopy 是基於2.7的, 有32位和64位可選。裝好之後,會有一個dos命令行的運行圖標,

這時,再自行去裝python3.5版本即可,從一般命令行dos或者powershell進入就是3.5了。兩者互不影響,庫資源也都是獨立的。這應該是比較好的解決方案了。


為什麼我在 Windows 上安裝的時候都是環境變數都是自動寫入的?


裝兩個比如路徑

D:python27

D:python35

然後去手動把 python27下面的python.exe改成python2.exe

python35下面的python.exe改成python3.exe

然後你的腳本第一行就加上類似

#! D:python27python2.exe

這樣的一行就是調用python2

要調用python3同理


1.

virtualenv

這基本是python開發的標配,然後你就可以控制在一個目錄下用一套python環境

2.

PyScripter也是有切換python版本的功能


有一個很通用的解決方法,原理詳見3. Using Python on Windows。

python3.3或更高版本在安裝時會同時把py.exe 和 pyw.exe 運行器複製到系統目錄%SYSTEMROOT% 下。

如果你平時通過命令行運行python那麼只要執行時,輸入

py filename.py
或者
py -3 filename.py

就可以執行指定版本的python程序。

若是你想通過雙擊py文件運行程序,那麼首先確保py文件關聯執行的程序是py.exe。其次在你的源文件頭部添加

#! python

#! python3

#! /usr/bin/env python3

順便說說pip多版本解決方法。較新版本的python安裝後會在其Scripts目錄下生成多個pip副本,以python27為例,有三個pip文件,分別為pip,pip2,pip2.7。3.x版本也是一樣。

我們可以把這兩個Script路徑加入到系統變數path中。

系統-&>高級系統設置-&>環境變數-&>path-&>編輯,添加上

X:Python27Scripts;X:Python35Scripts

保存後,重新開啟命令行,執行

# 調用pip2
pip2 install xxx
# 調用pip3
pip3 list
# 若有多個3.3版本可以指定第二位版本
pip3.5 list


Python 3.3 提供了一個新的Launcher來解決Windows上面的版本切換問題.

官方描述:

The Python launcher for Windows is a utility which aids in the location and execution of different Python versions. It allows scripts (or the command-line) to indicate a preference for a specific Python version, and will locate and execute that version. reference: 3. Using Python on Windows

簡單的說, 在安裝了Python 3.3的基礎上, 保證py在環境變數中. 從命令行調用python:

py -2.7
py -3

分別可以調用2.7或3.

Python script. 在.py文件頭部添加如下行:

#! python2.7
#! python3

分別用2.7或3執行腳本.

順說, py在script中玩的, 其實非常接近Linux的Shebang line. Linux上面你只需要:

#!/usr/bin/env python3


其實windows下面同時安裝了python2和3現在應該是已經可以同時兼容而互不影響,但是兩者直接混用對初學者來說還是容易混淆,安裝包的時候也不知道到底是下載的是2還是3,而且如果有的人又想同時配置幾個2.X版本呢,所以還是要掌握虛擬環境中配置python的方法,像虛擬機一樣,想用就用,不用整個刪了也乾乾淨淨。


&>需要軟體

  1. anaconda

  2. pychram


初學python時pip一直報錯時真的是懷疑人生的,還好有anaconda拯救了我。所以初學者不要因為一些瑣事折騰自己打擊了興趣,最開始就裝一個anaconda集成包簡單明了。

方法一 用anaconda安裝python3環境

1.打開cmd,創建python3環境

```
conda create --name python35 python=3.5
```


python35是虛擬環境名字,也就是文件夾名字,默認在
C:UsersusernameAnaconda2envs路徑下。你也可以自己命名,python=3.5用於指定安裝的python版本

2.先查看本地python版本

我是本地安裝的python2.7版本


可以看到此時是2.7版本 3.激活python3.5版本

```
activate python35
```

激活之後可以看到命令行前面有了一句(python35),在輸入python查看,版本也顯示位3.5了。至此python3.5版本便在你電腦和2.7共存了。3.切換回python2.7版本

```
deactivate python35
```

再輸入python,便看到又回到2.7版本了。
以上,便實現了安裝python3.5與2.7共存的問題,而且想刪就刪,想裝多個也是手到擒來。當然在命令行里跑python代碼總是不爽的,還是在文本編輯器里寫好python代碼了直接運行改腳本,比如先切換到test.py的文件夾下,然後輸入

```
python test.py
```

這種方法python3.5環境是配好了,寫代碼不是很爽,沒事,還有pycharm。

方法二,用pycharm來安裝python3.5環境

1.新建一個項目


這裡的create VirtualEnv本質上和conda創建的是類似的,只不過要用到VirtualEnv包,樓上諸位也有提到的,我們還是繼續折騰conda 2.創建python35環境

看到這個路徑好像發現了什麼,對的,就是和方法一的路徑一模一樣,所以本質上應該是和方法一相同的,所以看到命令行怕的同學也可以直接用方法二。這個方法的好處接下來說。
3.運行python代碼


bingo!在pycharm裡面,你就可以代碼、運行一起搞定,有漂亮的代碼高亮,也有強大的IDE輔助。

PS:
1. 我一個python2的忠實用戶為什麼要裝python3?

2. pycharm用edu郵箱可以申請專業版,雖然現在好像還沒用到比社區版多的功能。doge

3. 知乎還不支持markdown文件,每次都要二次編輯


Windows 下面直接官方安裝,他們解決了這個問題。mac下面推薦用homebrew 安裝不同python 版本,不要碰系統python. Linux 同理。

所有上面的系統都應當用virtualenv 實現環境分離。


如果老師要求的Python2是指Python2.7的話,你完全可以寫出Python2和Python3幾乎完全兼容的代碼。

技巧是寫『向前兼容』的代碼。 Writing Forwards Compatible Python Code

實際應用過程中不是你寫一份代碼自己跑兩遍,而是用Unit test在多個Python interpreter里自動跑。我看了一下PyCharm是支持配置多份test,每個test對應一個interpreter的。不清楚的看一下 How to Get Started with PyCharm and Have a Productive Python IDE 這裡的Unittest章節。


如果是unix 系統, 可以使用 [pyenv](yyuu/pyenv · GitHub)

stackoverflow:

How can I use Homebrew to install both Python 2 and 3 on mac Mountain Lion?


環境變數照舊

copy 安裝目錄下python.exe 改名 python3.exe or python2.exe

我想知道這麼乾的不止我一個 - -


我剛裝了兩個版本,先裝的3,然後裝的2.7

然後cmd 執行py 會直接出來2.7版本;

執行python 會直接出來3版本;

py -2.7,出來2.7

py -3,出來3

感覺就用py和python區分就好。


印象中我沒進行過什麼設置,命令行里輸py運行2,輸python運行3誒=_=

而且,如果用pycharm的話,可以在設置里隨時隨意切換2或者3。。


解決Python兩個版本共存問題,移步我寫的博客Windows下Python多版本共存。其實道理很簡單,第一配置環境變數,第二修改某一個版本的exe文件,我修改了的是Python2.7,將python.exe修改為python2.exe。這樣默認的是Python3.5。如圖


可以看看3. Using Python on Windows,在Python Launcher for Windows欄目里寫的很清楚


我的辦法是需要用python2.7的時候在環境變數把路徑改成2.7的,需要用python3.5到時候再把路徑改成3.5的,畢竟不是很頻繁的切換,這樣是最穩妥的辦法。


本人博客:https://www.cuzoe.com/archives/%E5%88%A9%E7%94%A8Virtualenv%E5%8E%9F%E7%90%86%E5%88%B6%E4%BD%9C%E4%BE%BF%E6%90%BA%E7%89%88Python.html

方法一、分開安裝並重命名

1. 先裝Python2或者Python3,安裝時記得勾選添加path環境變數

2. 再裝Python3或者Python2,安裝時記得勾選添加path環境變數

3. 然後修改 Python3 %localappdata%ProgramsPythonPython35 目錄下的python.exe為python3.exe

4. 此時在cmd輸入 python -V 和 python3 -V,可以正常使用,但是pip.exe不能這麼改,因為pip.exe文件中包含python的路徑信息,所以要重新安裝

python3 -m pip uninstall pip
python3 get-pip.py

5. 刪除 Python35Scripts 下的pip.exe,避免和Python2的pip.exe衝突

6. 此時再輸入

pip -V
pip3 -V

可以正常分開使用

方法二、使用Anaconda

如果你已經安裝Python2或者Python3的官方版本,你可以到Downloads下載Python3或者Python2版本的Anaconda,安裝時一路確認就行。最後你在開始菜單裡面將看到Python2或者Python3版本的Anaconda,此時兩個版本已經分開了。

如果你還沒安裝Python,那你只需要安裝Anaconda,比如Python3版本的Anaconda,然後再創建Python2版本

conda create --name python27 python=2.7
activate python27

詳見:windows下python多版本如何共存?

方法三、使用Virtualenv

先安裝Python3,再安裝virtualenv

pip install virtualenv

到官網下載Python2的安裝包,不要直接安裝,用Universal Extractor提取exe文件,相當於提取了綠色版Python2

再用Python2版本來創建virtualenv

virtualenv -p D:python-2.7.13-amd64python.exe python2.7

激活python2.7

python2.7Scriptsactivate.bat

這樣你就有兩個版本的Python了。

為了方便使用,你可以把它添加到右鍵。使用到的工具是Easy Context Menu

1. 點帶齒輪圖標(列表編輯器),再點新增,選擇cmd.exe

2. 參數為

/k + 你的activate.bat路徑

3. 最後勾上剛剛添加的菜單,點加號(應用更改)


推薦閱讀:

python3是如何處理字元異常的?
python3.5 pip 安裝lxml出錯?
python3如何查找list1中有而list2中沒有的元素??
為何我用sublime text3編譯python turtle畫圖後窗口自動關閉?
python的迭代器為什麼一定要實現__iter__方法?

TAG:Python | Python3x | Python入門 |