Masonite 是新興的 Python web 框架,風格類似 Rails 與 Laravel。下文使用的是 Masonite 2.2 LTS 版。

Pipenv 則是 Python 的虛擬環境與依賴包管理器,類似 Ruby 的 Bundler 或 PHP 的 Composer。

Python 生態的虛擬環境與包管理器目前還沒有一個業界標準,較多人使用的至少就有三種:venv、Pipenv、Poetry,因為 venv 是 Python 自帶的,更加底層,真正在應用面上的競爭者只有 Pipenv 與 Poetry。

這篇紀錄一下 Masonite 與 Pipenv 搭配使用的一點筆記。

在 Masonite 的安裝文件內只講到最傳統的 requirements.txt 與 Python 自帶的 venv 的用法,因為本人較慣於使用 Pipenv,所以留點紀錄在此。


首先參照 Masonite 安裝文件把 Python、OpenSSL / LibreSSL 相關包裝好裝滿,以及 Pipenv 也裝好裝滿。

在 Python 全域環境裝 moasonite-cli:

$ pip3 install masonite-cli

裝完就會用 craft 可以使用。Craft 是 Masonite 的命令列工具,相當於 Rails 的 rails 命令。

craft 建立新專案,注意它會用專案名建立一個目錄,專案的初始檔案與目錄結構都會一併建出來。建完進入專案目錄:

$ craft new project_name
$ cd project_name

此時換 Pipenv 出場,剛剛的目錄進來後會有 requirements.txt 傳便便在這裡,內容只有一項:

masonite>=2.2,<2.3

在這裡初始化一個 Pipenv 虛擬環境,Pipenv 會自動偵測到 requirements.txt 並轉成 Pipfile,並且自動設置虛擬環境與安裝依賴包:

$ pipenv install

等 Pipenv 跑完,才進入虛擬環境跑 craft 的初始化:

$ pipenv shell

(virtual environment) $ craft install

craft 跑完,驗證一下:

(virtual environment) $ craft serve

瀏覽器開出來應該可以看到 Masonite 的首頁。

簡單歸納一下其實只有以下幾點:

  • masonite-cli 包,裝在 Python 全域環境。
  • masonite 包,裝在 Python 虛擬環境。
  • craft install 在虛擬環境內執行。
  • 之後要在專案內使用 craft 命令建立任何新的 model、controller、view 等檔案也都在 Python 虛擬環境下執行。