邊做邊學Python Flask Web開發(2)-- 使用VirtualEnv虛擬環境
使用VirtualEnv虛擬環境
概述
說VirtualEnv是Python的一大神器不足為過,如果你在生活中也有那麼一點點的“潔癖”,相信你會喜歡上這個東西。
我們知道使用Python的過程中會安裝各種庫、包,甚至有時候還需要Python2和Python3兩種環境混合使用,慢慢的你的Python執行環境會越來越臃腫,這倒還是其次,最可怕的是,有些應用會使用到某個Python包的特定版本,我們知道同一個Python執行環境裡面是不能存在同一個包的不同版本的。所有這些都是你為什麼要使用VirtualEnv的理由。
VirtualEnv給你一個乾淨的Python執行環境,並給你不同的應用使用不同版本的包檔案提供了可能,甚至使用它可以讓Python2和Python3和諧地共存。對於我來說,我用它的原因主要有以下幾點:
- 我需要一個乾淨的Python環境,這個環境只針對我目前開發的應用;
- 我不希望多安裝一個和專案無關的包,也不希望出現和其它應用有包版本衝突的問題;
- 我還需要生成一個requirements.txt用來告訴其他人我專案的依賴;
- 我不希望使用pyinstaller打包釋出的過程中,給我加進來一堆沒有用處的檔案。
開始使用
通常我們這樣使用VirtualEnv:找到你的應用程式碼根目錄,輸入virtualenv venv,這樣就在程式碼根目錄下生成了一個venv目錄,這裡麵包含了一個乾淨的Python環境。
啟用venv環境
生成venv目錄後,我們使用下面的命令啟用virutalenv。
Windows
D:\dev>venv\Scripts\activate
Linux
$ source /home/user/dev/venv/bin/activate
使用source命令能夠避免activate沒有執行許可權的問題,如果有執行許可權可以去掉source。
生成requirements.txt
在venv提示符下,輸入以下命令即可生成支援庫清單檔案:
(venv)D:\dev>pip freeze > requirements.txt
如果需要還原requirements.txt所描述的Python環境,只需要在(另一個)venv提示符下,輸入以下命令:
(venv)D:\dev>pip install -r requirements.txt
在PyCharm中使用虛擬環境
PyCharm可能是現今最流行的Python整合化開發環境了,PyCharm功能強大,可以讓你的Python開發事半功倍,更重要的是它免費的Community版本其實已經足夠好用了,雖然官方文件中指出Community版本不支援Web開發,但實際應用中我們發現它能很好的對Flask應用進行除錯,而且Community版本還支援SVN等團隊協同方案,真是賺到了。
PyCharm支援VirtualEnv這一重要特性,它通常會在程式碼根目錄尋找venv目錄,嘗試把它作為Python的虛擬執行環境,但一些情況下PyCharm對虛擬環境的定位可能會失敗,這時候需要手動設定虛擬環境,步驟如下。
第一步:開啟工程,選擇File->Settings。
第二步:選擇Prject:xxx下面的Project Interpreter。
第三步:點選右側的齒輪圖示,選擇Add Local。
第四步:定位到venv目錄中的python.exe。
最後確認這些操作,設定完成。
PyCharm還會檢索根目錄中的requirements.txt,並對其中標示的包進行檢查,如果在當前的Python環境中沒有找到這些包會產生警告,可以根據實際情況安裝這些包或者忽略警告。
Flask開發中的應用
我們知道Flask是一個微型框架,它就像膠水,把你需要的各種元件粘合起來,因此Flask開發過程中,哪怕是一個小小的應用都需要我們安裝數量不小的擴充套件包。而Flask的開發環境通常和生產環境是分開的,也就是我們總有一天要涉及到把開發完成的Flask應用遷移到生產環境中去,這就涉及到到如何快速遷移部署的問題。於是,你應當很自然的想到,使用virutualenv對Flask應用進行包管理再好不過了。
在虛擬環境中安裝Flask
Flask依賴兩個核心元件,werkzeug和jinja2,其中一個是作為其基礎的wsgi,另一個是其預設的模板引擎。如果你用pip安裝flask,那麼它會自動為你安裝好這兩個必備元件。
執行下面的命令在虛擬環境中安裝flask:
(venv)D:\dev>pip install flask
安裝Flask擴充套件
使用Flask過程中不可避免地要安裝許多Flask擴充套件庫,Flask擴充套件庫的命名方式還是有一定規律的,如果執行Flask程式時出現以下錯誤提示,通常是沒有安裝相應的外掛:
ImportError: No module named flask.ext.login
我們注意一下模組名稱是flask.ext.login,按照flask外掛的命名規範,對應的軟體包是flask-login。使用pip安裝即可。
(venv)D:\dev>pip install flask-login
下一節我們將介紹Flask的Helloworld。