2019年2月18日 星期一

Python的虛擬環境 (Virtual Environment)

工欲善其事,必先利其器。在寫 python 程式的時候是否有曾經為了裝某些套件時,但是因為被其他套件的版本或是本身 python 的版本限制住,而無法順利安裝完成呢? 我自己目前有使用兩個python的虛擬環境來解決這個問題,一個是 virtual environemnt,另一個是 anaconda (或 miniconda)。
虛擬環境可以提供開發不同程式的時候,使用各自專案所需的開發環境,不會造成相互影響。或是如果有多人在相同平台上面開發程式時,也可以使用虛擬環境來區隔彼此所需的環境。

Virtual Environment

如果你的開發環境還沒有 virtualenv 的話,可以透過 easy_install virtualenv 的指令來安裝。

建立新的虛擬環境使用方式如下

    virtualenv -p /usr/bin/python venv


其中的 -p /usr/bin/python 這段參數是在指定這次建立的虛擬環境要使用哪一個的 python 執行檔;venv 這個參數是在指定這次建立的虛擬環境要放到哪邊。

如何套用建立的虛擬環境

    source venv/bin/activate

透過 source 的指令來指定到剛剛建立的 venv 裡面的 bin/activate 即可。若要離開現在的虛擬環境時,只需要輸入 deactivate 即可。
使用虛擬環境前與使用後的差異如下

如上圖所示,可以發現使用虛擬環境時所使用到的 python 路徑會一併跟著改變了。

如何在虛擬環境安裝套件

    當套用了虛擬環境之後,想要安裝任何的套件時,只需要透過 pip 這個指定直接安裝。

Anaconda (Miniconda)

另一個我有在使用的虛擬環境是 Anaconda/ Miniconda。Anaconda與Miniconda中間的差異主要在於預設的安裝套件,Anaconda 預設安裝的套件較多,許多 machine learning 會使用到的套件都會預設安裝,而 Minicoda 只會預設定裝 python 基本套件。

如何安裝

    Anaconda 與 Miniconda 安裝的說明可以參考下面連結。
    Anaconda - https://docs.anaconda.com/anaconda/install/
    Miniconda - https://conda.io/en/latest/miniconda.html

如何建立虛擬環境

    conda create -n py2 python=2.7

其中的 -n py2 是設定要建立的虛擬環境名稱,後面的 python=2.7 是拿來指定這次環境中 python 的版本。

如何查詢已建立過的虛擬環境

    conda env list

如何使用虛擬環境

    source activate py2

在 conda 裡面要使用虛擬環境跟 virtualenv 有一點點不同,指令 source 後面需要先加上 activate 之後,再加上之前建立的名稱,要離開目前 conda 的環境是要輸入 source deactivate。

如何在虛擬環境安裝套件

    當套用了虛擬環境之後,想要安裝任何的套件時,在 conda 下也可以直接透過 pip 這個指定直接安裝。或是 conda install PACKAGE_NAME。

虛擬環境的應用還蠻方便的,尤其是在開發多個專案的時候又遇到有不同的套件需求時,透過虛擬環境可以避免掉相互影響的問題。

沒有留言:

張貼留言