1. 程式人生 > >《Flask 入門教程》第一章:準備工作

《Flask 入門教程》第一章:準備工作

在通過這本書學習 Flask 開發前,我假設你瞭解了 Python 和 HTML 的基礎知識。你的 Python 版本可以是 2.7,也可以是 3.3 及以上版本。電腦的作業系統可以是 Windows,也可以是 macOS 或 Linux。

安裝編輯器和瀏覽器

對於編輯器來說,每個人都有不同的偏好,你可以自由選擇。可以選擇功能豐富的IDE(整合開發環境),比如 PyCharm;也可以選擇相對輕量的編輯器,比如 AtomSublime Text。瀏覽器建議使用 FirefoxChrome

使用命令列

在本書中,你需要使用命令列視窗來執行許多操作。你可以使用 Windows 下的 cmd.exe,或是 macOS 和 Linux 下的終端(Terminal)。下面我們執行一個最簡單的 whoami

命令(即 Who Am I?):

$ 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… 檢視你的倉庫內容。

進階提示