Windows上Python2和3如何相容
想學習Python3,但是暫時又離不開Python2。在Windows上如何讓它們共存呢?
事實上這個問題幾年以前Python社羣就給出了官方解決方案,只不過國內一直沒有注意到罷了。
我們在安裝Python3(>=3.3)時,Python的安裝包實際上在系統中安裝了一個啟動器py.exe,預設放置在資料夾C:/Windows/下面。這個啟動器允許我們指定使用Python2還是Python3來執行程式碼(當然前提是你已經成功安裝了Python2和Python3)。
如果你有一個Python檔案叫 hello.py,那麼你可以這樣用Python2執行它
py -2 hello.py
類似的,如果你想用Python3執行它,就這樣
py -3 hello.py
去掉引數 -2/-3
每次執行都要加入引數-2/-3還是比較麻煩,所以py.exe這個啟動器允許你在程式碼中加入說明,表明這個檔案應該是由python2解釋執行,還是由python3解釋執行。說明的方法是在程式碼檔案的最開始加入一行
#! python2
或者
#! python3
分別表示該程式碼檔案使用Python2或者Python3解釋執行。這樣,執行的時候你的命令就可以簡化為
py hello.py
使用pip
當Python2和Python3同時存在於windows上時,它們對應的pip都叫pip.exe,所以不能夠直接使用 pip install 命令來安裝軟體包。而是要使用啟動器py.exe來指定pip的版本。命令如下:
py -2 -m pip install XXXX
-2 還是表示使用 Python2,-m pip 表示執行 pip 模組,也就是執行pip命令了。如果是為Python3安裝軟體,那麼命令類似的變成
py -3 -m pip install XXXX
#! python2 和 # coding: utf-8 哪個寫在前面?
對於Python2使用者還有另外一個困惑,Python2要在程式碼檔案頂部增加一行說明,才能夠在程式碼中使用中文。如果指明使用的Python版本也需要在檔案頂部增加一行,那哪一行應該放在第一行呢?
#! python2 需要放在第一行,編碼說明可以放在第二行。所以檔案開頭應該類似於:
#! python2 # coding: utf-8
有了這些技巧,Python2和Python3就可以愉快地在一起玩耍了~