Pyhton 虛擬環境 (virtualenv)

虛擬環境

Python的實務開發一般會使用虛擬環境,系統環境中保留各Python版本的標準套件,再將專案需要的套件安裝在虛擬環境中。使用虛擬環境有以下好處:

  • 每個專案會有一個獨立的Python環境。
  • 不需要root權限就可以安裝新套件。
  • 可以確保專案環境的一致性。

建立虛擬環境

方式一

$ python[版號] -m venv [虛擬環境名稱]

例如:建立一個專門開發深度學習的虛擬環境,並使用Python3.6版開發。

$ python3.6 -m venv deeplearning

方式二

virtualenv -p python[版號] [虛擬環境名稱]

範例:

virtualenv -p python3.6 django

啟動虛擬環境

當建立完一個虛擬環境,會在使用者自家的目錄~底下,建立一個以虛擬環境名稱命名的目錄,裡面會包含所有必要的檔案。使用source指令,啟動虛擬環境目錄底下的activate檔,可以進入虛擬環境。

$ source [虛擬環境名稱]/bin/activate

例如:

$ source deeplearning/bin/activate

成功後,指令列前端會有(虛擬環境名稱)標示。 例如:

(deeplearning) $

在虛擬環境中,就可以使用之前提到的pip指令安裝專案需要的第三方套件。 例如:

(deeplearning) $ pip install Django

離開虛擬環境

$ deactivate

移除虛擬環境

找出虛擬環境的所在目錄直接移除即可,如此一來,系統中各版本的Python還是維持在最初始的狀態。

pip

若需要安裝Python第三方套件,pip一直是Python社群最建議的方式,從Python 3.4版就開始內建pip

同一個系統中,能夠並存多個版本的Python,例如:同時安裝Python2.7版和Python3.6版。在終端機中,輸入python並點選tab鍵兩下,會列出當前環境下可以使用的Python指令。

$ python
python     python2.7     python3     python3.6

若需要執行python2.7版:

$ python2.7 demo.py

當中第一個Python指令後面沒帶版本號,可使用python --version查詢版本。

$ python --version
Python 3.6.1

$ python3 --version
Python 3.6.1

由以上結果得知,pythonpython3指令都代表執行python3.6版。

同理,在終端機中,輸入pip並點選tab鍵兩下,會出現各種版本的pip指令。使用pip2.7安裝的第三方套件會安裝在python2.7版的site-packages底下,以此類推。

$ pip
pip     pip2    pip2.7    pip3    pip3.6

例如:在python2.7版下安裝Django套件,解除安裝則使用uninstall

$ pip2.7 install Django
$ pip2.7 uninstall Django

當中有些未知的pip指令,可使用pip --version查詢pip指令來自於哪個Python版本,一些查詢結果如下:

$ pip --version
pip 9.0.1 from <usrdir>/python3.6/site-packages (python 3.6)

$ pip2 --version
pip 9.0.1 from <usrdir>/python2.7/site-packages (python 2.7)

由以上結果得知,使用pip會將套件安裝在python3.6版底下,而pip2會將套件安裝在python2.7版底下。

環境變數

進入Python互動環境,執行以下程式碼,會列出所有Python模組所在路徑,這些都是開發Python時可以import的模組。

  • 標準套件模組存放在/<usrdir>/lib/python3.6底下,例如:os.py、re.py。
  • 第三方套件模組存放在/<usrdir>/lib/python3.6/site-packages底下,例如:numpy、tensorflow。
    >>> import sys
    >>> sys.path
    ['', '/<usrdir>/lib/python3.6', '/<usrdir>/lib/python3.6/site-packages', ...]
    

新增環境變數

$ export PYTHONPATH=[自定義模組完整路徑]

範例:加入自己開發的Python套件。

$ export PYTHONPATH=/users/Bob/mylib

例如/users/Bob/mylib中有一個foo.py,開發Python時,可以import mylib 目錄中的模組。

import foo

results matching ""

    No results matching ""