建立和使用虛擬環境
virtualenv
是一個構建孤立的 Python 環境的工具。該程式建立一個資料夾,其中包含使用 Python 專案所需的軟體包所需的所有可執行檔案。
安裝 virtualenv 工具
這只需要一次。virtualenv
計劃可通過你的發行版獲得。在類似 Debian 的發行版中,該包被稱為 python-virtualenv
或 python3-virtualenv
。
你也可以使用 pip 安裝 virtualenv
:
$ pip install virtualenv
建立新的虛擬環境
每個專案只需要一次。在啟動要隔離依賴項的專案時,可以為此專案設定新的虛擬環境:
$ virtualenv foo
這將建立一個 foo
資料夾,其中包含工具指令碼和 python
二進位制檔案本身的副本。資料夾的名稱不相關。一旦建立了虛擬環境,它就是自包含的,不需要使用 virtualenv
工具進一步操作。你現在可以開始使用虛擬環境了。
啟用現有虛擬環境
要啟用虛擬環境,需要一些 shell 魔術,因此你的 Python 是 foo
而不是系統的。這是 activate
檔案的目的,你必須將其匯入當前 shell:
$ source foo/bin/activate
Windows 使用者應鍵入:
$ foo\Scripts\activate.bat
啟用虛擬環境後,python
和 pip
二進位制檔案以及第三方模組安裝的所有指令碼都是 foo
內的。特別是,所有安裝了 pip
的模組都將部署到虛擬環境中,從而實現了一個包含的開發環境。啟用虛擬環境還應該為你的提示新增字首,如以下命令所示。
# Installs 'requests' to foo only, not globally
(foo)$ pip install requests
儲存和恢復依賴項
要通過 pip
儲存已安裝的模組,可以使用 freeze
命令將所有這些模組(以及相應的版本)列入文字檔案。這允許其他人使用 install 命令快速安裝應用程式所需的 Python 模組。這樣一個檔案的傳統名稱是 requirements.txt
:
(foo)$ pip freeze > requirements.txt
(foo)$ pip install -r requirements.txt
請注意,freeze
列出了所有模組,包括你手動安裝的頂級模組所需的傳遞依賴性。因此,你可能更喜歡手工製作 requirements.txt
檔案 ,只需要放置你需要的頂級模組。
退出虛擬環境
如果你已在虛擬環境中工作,則可以將其停用以返回到正常的 shell:
(foo)$ deactivate
在共享主機中使用虛擬環境
有時,如果你在共享主機中使用 mod_wsgi,或者如果你無法訪問檔案系統(例如 Amazon API Gateway 或 Google AppEngine),則無法使用 virtualenv。對於這些情況,你可以部署在本地 virtualenv 中安裝的庫並修補 sys.path
。
幸運的是,virtualenv 附帶了一個指令碼,可以更新你的 sys.path
和你的 sys.prefix
import os
mydir = os.path.dirname(os.path.realpath(__file__))
activate_this = mydir + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
你應該在伺服器將執行的檔案的最開頭附加這些行。
這將找到 bin/activate_this.py
,virtualenv
在你正在執行的同一目錄中建立檔案並將你的 lib/python2.7/site-packages
新增到 sys.path
如果你希望使用 activate_this.py
指令碼,請記住至少部署 bin
和 lib/python2.7/site-packages
目錄及其內容。
Python 3.x >= 3.3
內建虛擬環境
從 Python 3.3 開始, venv 模組將建立虛擬環境。pyvenv
命令不需要單獨安裝:
$ pyvenv foo
$ source foo/bin/activate
要麼
$ python3 -m venv foo
$ source foo/bin/activate