從瓶裡倒出第一滴 — Flask 開始動手玩

Pei Cheng
PyLadies Taiwan
Published in
6 min readOct 2, 2017

說到 Python 的網路開發框架百花齊放,參考 Python Wiki 裡所列出的 Web Frameworks for Python,從功能齊全的 Full Stack 網路框架 Django ,到自選所需擴充功能(extension)的微框架(microframework)的 Flask,提供想使用 Python 開發網站或相關功能的多種選擇,近期 PyLadies Taiwan 正在進行一系列的《Flask Web 開發實戰》活動,電子報將跟著此系列活動的腳步介紹 Flask 相關開發流程。

Flask Logo (source: Flask 官網)

訪問 Flask 官網首先看到 log — 一個細頸瓶旁邊寫著 「web development, one drop at a time」(網站開發,一次取用一滴)。Flask 相依於 Werkzeugc 和模板 (template) Jinja 2 提供基本功能之外,其他功能皆需要另外安裝。例如想要使用 Bootstrap 的元件可以使用 Flask-Bootstrap,想使用資料庫也可以到官網擴充套件區尋找想連接的資料庫相關套件使用。因為只取所需的部分,因此 Flask 一開始很簡單就可以做出基本網站,再根據需求擴充。

虛擬環境 Let’s Go

在開始建立第一個 Flask 網站前,先來安裝虛擬環境 (virtual environment)。為什麼需要虛擬環境?這就像是為了這次的學習建立一個遊樂場,在這個場子裡,可以翻滾、可以東敲西打,不用擔心把場地搞亂了無法收拾,只要離開虛擬環境,再造下一個就好了。在實務上,有時會碰到不同專案會使用不同的套件,甚至使用相同套件但是使用不同版本的情況。為了讓各個專案可以在同一台電腦上開發且各自環境設定不會互相干擾,虛擬環境就可以派上用場。為每個專案建立各自的虛擬環境,在開發時啟動專屬的虛擬環境,就不用擔心干擾到別的專案。

Python 3.3 以上包含 venv 模組,直接下指令就可以建立虛擬環境,Python 3.2以下和 Python 2.7則需要先安裝 virtualenv 套件。

以下範例是在 MacOS 的指令列進行, <DIR> 代表虛擬環境所在資料夾。

  • Python 2.7 & Python 3.2 安裝好virtualenv 套件後:
$ virtualenv <DIR>
  • Python 3.3~3.5
$ pyvenv <DIR>
  • Python 3.6
$ python3 -m venv <DIR>

安裝好虛擬環境後, 使用 source指令來啟動環境,啟動是使用 bin 資料夾 裡的 activate script 啟動:

$ source <DIR>/bin/activate
  • 如果啟動了虛擬環境,會看到 (<DIR>) 在前:
(<DIR>) $
  • 離開虛擬環境,輸入以下指令:
(<DIR>) $ deactivate

在虛擬環境裡,執行 Python 3 只需要輸入 python,安裝套件執行 pip install即可。如果想要確認 Python 版本,執行 python --version 即可確認。

虛擬環境的其它設定

安裝虛擬環境時,預設會安裝 pip package,如果不需要,在安裝虛擬環境時加上選項 (option) --wihout-pip

例如在裝有 Python 3.6 環境於 nopip 資料夾安裝虛擬環境:

$ python3 -m venv nopip --without-pip

安裝後,打開 nopip 資料夾會發現 bin 以及 lib 資料夾裡都沒有安裝 pip 相關指令或套件。

nopip 資料夾結構

venv 的其他選項可參考官方文件

如果在 Mac 同時有安裝 Python 2.7 和 Python 3.6,可以開啟 Python 2.7 的虛擬環境嗎?

根據實驗結果,利用 virtualenv 套件的 -p 選項來指定想要安裝的 Python 版本是可以達到的。

先確認 Python 2.7 所在資料夾:

$ which python
/usr/local/bin/python

接著利用 virtualenv 套件安裝,此範例是裝在 P2VENV 資料夾裡:

$ virtualenv -p /usr/bin/python P2VENV

啟動虛擬環境後,確認 Python 版本會發現是上面選擇版本。

$ source P2VENV/bin/activate
(P2VENV) $ python --version
Python 2.7.10

virtualenv 的選項可參考官方文件 reference 頁

第一個 Flask 程式 Hello World

安裝並啟動虛擬環境後,首先安裝 flask,接著執行 flask --version ,可取得 Flask 版本資訊,表示安裝成功。

(venv) ~/flaskWeb $ flask --version
Flask 0.12.2

虛擬環境和網頁程式碼不需要放在同一個資料夾,只要執行時能夠選到相關檔案即可。例如將虛擬環境裝在 ~/venv/ 下,將網站程式碼裝在 ~/flaskWeb/ 下,可直接在此資料夾下啟動虛擬環境,並開始寫程式。

~/flaskWeb $ source ~/venv/bin/activate
(venv) ~/flaskWeb $ python hello.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

hello.py 怎麼寫?趕快來參考 Flask Web 開發實戰 — 01 投影片,寫出你的第一個 Flask 應用程式,還可以了解動態路由 (dynamic routing)、debug、模板使用…等。如果還意猶未盡,記得關注 PyLadies Taiwan 相關活動訊息,直接到現場參與《Flask Web 開發實戰》一系列的實體活動。

參考資料

--

--