《Flask 入門教程》第一章:準備工作
在通過這本書學習 Flask 開發前,我假設你瞭解了 Python 和 HTML 的基礎知識。你的 Python 版本可以是 2.7,也可以是 3.3 及以上版本。電腦的作業系統可以是 Windows,也可以是 macOS 或 Linux。
安裝編輯器和瀏覽器
對於編輯器來說,每個人都有不同的偏好,你可以自由選擇。可以選擇功能豐富的IDE(整合開發環境),比如 PyCharm;也可以選擇相對輕量的編輯器,比如 Atom 或 Sublime Text。瀏覽器建議使用 Firefox 或 Chrome。
使用命令列
在本書中,你需要使用命令列視窗來執行許多操作。你可以使用 Windows 下的 cmd.exe,或是 macOS 和 Linux 下的終端(Terminal)。下面我們執行一個最簡單的 whoami
$ whoami
greyli複製程式碼
這個命令會打印出當前計算機使用者的名稱。其他常用的命令還有 cd
命令,用來切換目錄(change directory);mkdir
命令,用來建立目錄(make directory)。在不同的作業系統上,執行某個操作的命令可能會有所不同,在必要的地方,書裡會進行提示。
我們先來為我們的程式建立一個資料夾:
$ mkdir watchlist
$ cd watchlist複製程式碼
除非特別說明,從現在開始,本書假設你的工作目錄將是在專案的根目錄,即 watchlist/ 目錄。
為了確保你已經正確安裝了 Python,可以執行下面的命令測試是否有報錯:
$ python --version
Python 2.7.11複製程式碼
對於 Windows 使用者,請使用 cmder(一個基於 ConEmu 實現的終端模擬器) 來代替系統自帶的 cmd.exe,或是使用安裝 Git for Windows 後(下一節)附帶的 Git Bash。cmder 集成了 Git Bash,支援一些在 Linux 或 macOS 下才能使用的命令(程式),比如 ls、cat、nano、ssh 等,這些命令我們在後面會用到。
使用 Git
Git 是一個流行的版本控制工具,我們可以用它來記錄程式原始碼和檔案的變動情況,或是在程式設計時進行多人協作,你可以把它看做一個優雅的程式碼變動備份工具。
如果你還不熟悉 Git 也沒關係,可以先按照書中的命令去做,有時間再去了解原理。現在要做的第一件事就是在你的電腦上安裝 Git (可以執行 git --help
命令檢查是否已經安裝,沒有提示“命令未找到(Command not found)”則表示已安裝)。
安裝後可以在命令列先使用使用下面的命令檢視版本,沒有報錯則表示已正確安裝:
$ git --version
git version 2.17.1複製程式碼
為了讓 Git 知道你是誰,以便在提交程式碼到版本倉庫的時候進行記錄,使用下面的命令設定你的資訊:
$ git config --global user.name "Grey Li" # 替換成你的名字
$ git config --global user.email "[email protected]" # 替換成你的郵箱地址複製程式碼
現在為我們的專案資料夾建立一個 Git 倉庫,這會在我們的專案根目錄建立一個 .git 資料夾:
$ git init
Initialized empty Git repository in ~/watchlist/.git/複製程式碼
Git 預設會追蹤專案資料夾(或者說程式碼倉庫)裡所有檔案的變化,但是有些無關緊要的檔案不需要記錄變化,我們在專案根目錄建立一個 .gitignore 檔案,在檔案中寫入忽略檔案的規則。因為檔案內容比較簡單,我們直接在命令使用 nano 來建立:
$ nano .gitignore複製程式碼
在 nano 編輯介面寫入常見的可忽略檔案規則
*.pyc
*~
__pycache__
.DS_Store複製程式碼
使用 Control + O 和 Enter 鍵儲存,然後按下 Control + X 鍵退出。在後續章節,對於簡單的檔案,都會使用 nano 建立,這部分操作你也可以使用編輯器來完成。
將程式託管到 GitHub(可選)
這一步是可選的,將程式託管到 GitHub、GitLab 或是 BitBucket 等平臺上,可以更方便的備份、協作和部署。這些託管平臺作為 Git 伺服器,你可以為本地倉庫建立遠端倉庫。需要注意的是,和後兩者不同,在 GitHub 上,免費賬戶只能建立公開倉庫,也就意味著上傳程式碼後其他人都可以看到。
首先要註冊一個 GitHub 賬戶,點選訪問註冊頁面,根據指示完成註冊流程。登入備用。
設定 SSH 金鑰
一般情況下,當推送本地改動到遠端倉庫時,需要輸入使用者名稱和密碼。因為傳輸通常是通過 SSH 加密,所以可以通過設定 SSH 金鑰來省去驗證賬號的步驟。
首先使用下面的命令檢查是否已經建立了 SSH 金鑰:
$ cat ~/.ssh/id_rsa.pub複製程式碼
如果顯示“No such file or directory”,就使用下面的命令生成 SSH 金鑰對,否則複製輸出的值備用:
$ ssh-keygen複製程式碼
一路按下 Enter 採用預設值,最後會在使用者根目錄建立一個 .ssh 資料夾,其中包含兩個檔案,id_rsa 和 id_rsa.pub,前者是私鑰,不能洩露出去,後者是公鑰,用於認證身份,就是我們要儲存到 GitHub 上的金鑰值。再次使用前面提到的命令獲得檔案內容:
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...省略 N 個字元...3aph [email protected]複製程式碼
選中並複製輸出的內容,訪問 GitHub 的 SSH 設定頁面(導航欄頭像 - Settings - SSH and GPG keys),點選 New SSH key 按鈕,將複製的內容貼上到 Key 輸入框裡,再填一個標題,比如“My PC”,最後點選“Add SSH key”按鈕儲存。
建立遠端倉庫
訪問新建倉庫頁面(導航欄“+” - New repository),在“Repository name”處填寫倉庫名稱,這裡填“watchlist”即可。點選“Create repository”按鈕建立倉庫。
因為我們已經提前建立了本地倉庫,所以需要指定倉庫的遠端倉庫地址(如果還沒有建立,則可以直接將遠端倉庫克隆到本地):
$ git remote add origin [email protected]:greyli/watchlist.git # 注意更換地址中的使用者名稱複製程式碼
這會為本地倉庫關聯一個名為“origin”的遠端倉庫,注意將倉庫地址中的“greyli”換成你的 GitHub 使用者名稱。
建立虛擬環境
虛擬環境是獨立於 Python 全域性環境的 Python 直譯器環境,使用它的好處如下:
- 保持全域性環境的乾淨
- 指定不同的依賴版本
- 方便記錄和管理依賴
我們將使用 Pipenv 來建立和管理虛擬環境、以及在虛擬環境中安裝和解除安裝依賴包。它集成了 pip 和 virtualenv,可以替代這兩個工具的慣常用法。另外,它還集成了 Pipfile,它是新的依賴記錄標準,使用 Pipfile 檔案記錄專案依賴,使用 Pipfile.lock 檔案記錄固定版本的依賴列表。這兩個檔案替代了手動通過 requirements.txt 檔案記錄依賴的方式。我們首先使用 pip 安裝 Pipenv,Windows 系統使用下面的命令:
$ pip install pipenv複製程式碼
Linux 和 macOS 使用下面的命令:
$ sudo -H pip install pipenv複製程式碼
使用 Pipenv 建立虛擬環境非常簡單,使用 pipenv install
命令即可為當前專案建立一個虛擬環境:
$ pipenv install複製程式碼
這個命令執行的過程包含下面的行為:
- 為當前目錄建立一個 Python 直譯器環境,按照 pip、setuptool、virtualenv 等工具庫。
- 如果當前目錄有 Pipfile 檔案或 requirements.txt 檔案,那麼從中讀取依賴列表並安裝。
- 如果沒有發現 Pipfile 檔案,就自動建立。
建立虛擬環境後,我們可以使用 pipenv shell
命令來啟用虛擬環境,如下所示:
$ pipenv shell複製程式碼
安裝 Flask
無論是否已經啟用虛擬環境,你都可以使用下面的命令來安裝 Flask:
$ pipenv install flask複製程式碼
這會把 Flask 以及相關的一些依賴包安裝到對應的虛擬環境,同時 Pipenv 會自動更新依賴檔案中。
本章小結
當你進行到這裡,就意味這我們已經做好學習和開發Flask程式的全部準備了。使用 git status
命令可以檢視當前倉庫的檔案變動狀態:
$ git status複製程式碼
下面讓我們將檔案改動提交進 Git 倉庫,並推送到在 GitHub 上建立的遠端倉庫:
$ git add .
$ git commit -m "I'm ready!"
$ git push -u origin master # 如果你沒有把倉庫託管到 GitHub,則跳過這條命令,後面章節亦同複製程式碼
這裡最後一行命令添加了 -u
引數,會將推送的目標倉庫和分支設為預設值,後續的推送直接使用 git push
命令即可。在 GitHub 上,你可以通過 github.com/你的使用者名稱/watch… 檢視你的倉庫內容。
進階提示
- 閱讀 MDN 的 《Web 入門教程》(瞭解 HTML、CSS、JavaScript)。
- 閱讀短教程《Git 簡明指南》。
- 閱讀文章《Pipenv:新一代Python專案環境與依賴管理工具》或 Pipenv 官方文件。
- 如果你打算開源你的程式,在專案根目錄中新增一個 README.md (自述檔案)和 LICENSE (授權宣告)是很有必要的。詳情可以訪問 Open Source Guides 瞭解。
- 在安裝 Pipenv 時,你也可以使用
--user
選項進行使用者安裝(即pip install --user pipenv
)。使用者安裝可以避免破壞全域性的包,而且可以避免對不可信的包使用 sudo pip 導致的潛在安全問題。詳情見 Pipenv 文件安裝章節。