綱要
〇、本文提要一、淺談Python虛擬環境
二、建立Python虛擬環境的工具virtualenv與env
三、virtualenv安裝與使用方法
四、venv的安裝與使用方法
五、其它補充
六、參考
〇、本文提要
本文將談論何謂Python虛擬環境以及它的用處,還有相關工具的簡易使用。為方便說明,以下假定工作環境是Ubuntu 16.04 64位元、Python 3.5,於必要時再補充一下在Windows上的作法。
一、淺談Python虛擬環境
在作業系統中已預裝了Python 2與Python 3,是整個系統用的Python,除了可以讓使用者使用之外,有些系統用的程式與工具也會用到它們。假若使用者要在這電腦上以Python開發稍具規模的軟體專案,很可能要加裝一些第三方的Python套件(Package),如果有多個專案,也很可能會在不同專案之間使用不同版號的同一個套件。
像這種情況,如果把這些套件都裝在整個系統用的Python,勢必造成混亂,此時就需要某種機制,可為A專案隔離出它所需要使用的Python環境與第三方套件,也可為使用與A專案截然不同套件的B專案隔離出一個單獨的Python執行環境,這樣也不會影響到整個系統用的Python環境。這機制就是這裡所要談的Python虛擬環境。
這樣,就可在整個系統用的Python安裝一般常用的套件,而在不同性質的專案中,視情況安裝不同的套件,而不致干擾到其它專案與整個系統的Python環境。
你可以想像整個系統用的Python是本尊,虛擬環境則是用本尊建立出來的分身,而分身可以依需要做出與本尊截然不同的改動。
二、建立Python虛擬環境的工具virtualenv與venv
建立Python虛擬環境的工具可用virtualenv或是venv。- virtualenv非內建,需要額外安裝,但因比venv較早發展,故有不少的使用群眾,也有相關的延伸套件,像virtualenvwrapper。
- venv則是Python 3.3版開始出現在標準庫中,用來建立輕量型虛擬環境,其使用法與virtualenv很相似。
以下僅說明如何使用virtualenv或venv建立、啟用與退出虛擬環境,不涉及像virtualenvwrapper之類延伸套件的使用。
三、virtualenv安裝與使用方法
在可以使用virtualenv建立虛擬環境前,先在整個系統用的Python環境中安裝virtualenv:用pip安裝:
$ sudo pip3 install virtualenv
pip的使用,請見〈pip: Python Installs Packages〉或是用apt工具安裝python3-virtualenv:
$ sudo apt-get install python3-virtualenv
個人偏好前者,因virtualenv很常更新,用pip即時更新很方便,若用後者,apt套件的更新就不那麼即時。Windows上無apt的方式,就用pip安裝方式。
裝好後,就可用它來建立虛擬環境。為了方便說明,在此先假定一下虛擬環境的位置。
假定有個專案目錄叫demo_project,要為此專案建立一個目錄叫demo_env存放Python虛擬環境,而這二目錄都放在~/demo目錄下。
建立虛擬環境:
$ cd ~/demo/
$ virtualenv demo_env
顯示以下訊息: New python executable in /home/fygul/demo/demo_env/bin/python3此時會在~/demo/建立demo_env子目錄,並把Python 3.5的直譯器環境與pip工具等等……複製到其中。
Also creating executable in /home/fygul/demo/demo_env/bin/python
Installing setuptools, pip, wheel...done.
單獨執行virtualenv不加參數則會顯示使用法。
啟用虛擬環境:
$ source demo_env/bin/activate
啟用此環境後,此時的提示符號前面會以半形括弧加上虛擬環境的名稱,如:(demo_env)$
這時在(demo_env)$提示符號下執行Python程式或用pip安裝套件,都是使用demo_env子目錄中的Python環境。
例如要執行~/demo/demo_project/hello_world.py:
(demo_env)$ python demo_project/hello_world.py
或是在demo_project中有個requirements.txt,想用pip做安裝其中的套件:
(demo_env)$ cd demo_project
(demo_env)$ pip install -r requirements.txt
在此提示符號下,也是可以執行系統指令,並不受影響。在Windows上啟用有點不太一樣,可以看一下demo_env/Scripts/下的指令檔,有activate, activate.bat, activate.ps1,後二者分別用在cmd.exe與PowerShell。
例如在cmd.exe下執行啟用指令:
demo_env\bin\activate.bat
或
demo_env\bin\activate
退出虛擬環境
在完成在此虛擬環境所要執行的工作後,若不是直接關閉這Terminal終端機窗口,而是要繼續使用終端機執行其它Python程式,就要先退出這虛擬環境,回復原來:
(demo_env)$ deactivate
提示符號會回復原來的系統提示符號。此時再執行Python程式,就是使用整個系統用的Python環境了。Windows上則是:
demo_env\Scripts\deactivate.bat
四、venv的安裝與使用方法
在Windows上無需安裝即可使用,在Ubuntu上要用apt安裝:
$ sudo apt-get install python3-venv
因為venv是標準庫中的模組,不是列在PyPI上的套件,所以不適用於pip安裝方式。venv的用法與virtualenv很類似,除了建立虛擬環境的指令行不太一樣。
建立虛擬環境
第一種方法是用pyvenv腳本建立虛擬環境:
$ cd ~/demo/
$ pyvenv demo_env
若pyvenv後的目標目錄是多層的,它也可以自動把不存在的目錄建立起來,例如目標目錄是demo2/a/b/c/new_venv,以此例來講,虛擬環境會建立在~/demo/demo2/a/b/c/new_venv,這中間的目錄由pyvenv一次為你開好了。※2018-6-22補充:Python 3.6版起pyvenv已不再使用,請改用以下第二種方法。
第二種方式,執行venv模組來建立虛擬環境:
$ python3 -m venv demo_env
這裡的-m選項的意思即是以Python3執行模組venv。Windows上請用第二種方式。
pyvenv較詳細的用法可見pyvenv -h或python3 -m venv -h,以及後面的六、參考。
啟用、退出虛擬環境
$ source demo_env/bin/activate
(demo_env)$ deactivate
指令的用法基本上可視為與virtualenv一樣,雖然隨著所用的shell的不同會有點小差異,但一般情形下幾乎可忽略不管。五、其它補充
本文僅做很簡單的介紹,像在建立虛擬環境時指定Python版本,或更新虛擬環境等等……更多選項,則可見指令的幫助或是後面的參考。最後補充一個與虛擬環境並無直接相關的話題。
一部電腦上可安裝多個版本的Python與虛擬環境,而不致互相干擾。
在某些情況下,也許不想自己建立虛擬環境,那麼也可考慮拿另一個現成獨立的Python執行環境來用,也不會干擾到系統用的Python。
例如工作上常做數據分析,常有繪圖的需要,那麼可考慮用Anaconda,它不僅是個獨立的Python執行環境,也預裝了很多套件,省卻自己逐一安裝的功夫。類似的還有像WinPython, Python(x,y)...這可以在Python官網上的Alternative Implementations網頁上找到。
以前還有人做Portable Python,但目前已不再做了。
沒有留言:
張貼留言