1. 程式人生 > >Windows下多版本Python共存

Windows下多版本Python共存

當機器上同時裝有 Python2.7 和Python 3.x 兩個版本,會導致在Shell中執行 Python 命令時衝突,比如我們先安裝的Python2.7,

在Path中也預設加入了Python2.7/ 路徑的索引,當我們想要執行Python3.X的Python命令時系統會預設去找Python2.7/目錄下的Python指令去執行,

這個就是問題的關鍵,隨之而來的還有pip命令等 。

解決方式有兩種:

1.根據不同版本分別將Python指令改名。

將 Python2.7 /python.exe 和 將 Python2.7 /pythonw.exe 改為

Python2.7 /python2.exe 和 將 Python2.7 /pythonw2.exe

將Python3.x /python.exe 和 將 Python3.x /pythonw.exe改為

Python3.x /python3.exe 和 將 Python3.x /pythonw3.exe

同時將兩個版本路徑配置到環境變數中


然後在Shell中分別使用不同指令版本來執行


對於pip指令我們通常的使用方式是

pip install 模組名稱
然而我們添加了兩個版本Pyhtonx/Script/ 這兩個目錄下都有pip指令,這又會產生衝突。所以要像下面這樣使用
python2 -m pip install 模組名稱
python3 -m pip install 模組名稱

檢視pip版本:


python2 -m pip -V
python3 -m pip -V


2.藉助其他發行版Python管理包如 Anaconda

anaconda是一個用於科學計算的Python發行版,支援 Linux, Mac, Windows系統,提供了包管理與環境管理的功能,可以很方便地解決多版本python並存、切換以及各種第三方包安裝問題。Anaconda利用工具/命令conda來進行package和environment的管理,並且已經包含了Python和相關的配套工具。
這裡先解釋下conda、anaconda這些概念的差別。conda可以理解為一個工具,也是一個可執行命令,其核心功能是包管理與環境管理。包管理與pip的使用類似,環境管理則允許使用者方便地安裝不同版本的python並可以快速切換。Anaconda則是一個打包的集合,裡面預裝好了conda、某個版本的python、眾多packages、科學計算工具等等,所以也稱為Python的一種發行版。其實還有Miniconda,顧名思義,它只包含最基本的內容——python與conda,以及相關的必須依賴項,對於空間要求嚴格的使用者,Miniconda是一種選擇。
conda的設計理念——conda將幾乎所有的工具、第三方包都當做package對待,甚至包括python和conda自身!因此,conda打破了包管理與環境管理的約束,能非常方便地安裝各種版本python、各種package並方便地切換。

它提供了兩個關鍵功能:

  • :提供包管理,功能類似於 pip,Windows 平臺安裝第三方包經常失敗的場景得以解決。
  • :提供虛擬環境管理,功能類似於 virtualenv,解決了多版本Python並存問題。

下載後通過以下方式建立新環境:

# 基於 python3.6 建立一個名為test_py3 的環境
conda create --name test_py3 python=3.6 
 
# 基於 python2.7 建立一個名為test_py2 的環境
conda create --name test_py2 python=2.7
 
# 啟用 test 環境
activate test_py2 # windows
source activate test_py2 # linux/mac
 
# 切換到python3
activate test_py3


啟用環境時會提示下載擴充套件包(預設會安裝以下元件包):


如果嫌Anaconda包體過大可以選用MiniConda等小包體Python發行版

它僅包含Python本身和Conda包管理器,因此體積不大。使用miniconda時上述步驟完全一致,就不贅述了。