如果你對製作 EPUB 電子書足夠熟悉的話,你應該知道 Sigil 這個製作 EPUB 的專業工具。
我自己本來是透過 Adobe InDesign 轉製 EPUB,不過這兩年經過 Adobe 的神助攻,InDesign 鼓勵我尋找其他解決方案。🤣
當深度使用 Sigil 之後就發現,Sigil 功能還是不太完整,需要安裝額外的 Plug-in 來強化它的不足。不過,實際安裝了幾個 Plug-in 後又會發現,其實 Sigil 網站上網友分享的 Plug-in 不是功能不完整,不然就是外掛版本古老,沒有更新維護,有點年久失修。
所以,如果要用 Sigil 來搭建 EPUB 製作流程,自己寫 Plug-in 就是不可避免的事情了。
而 Sigil 的 Plug-in 核心幾乎都是 Python,所以就必須用 Python 語言來寫,但是 Sigil 預設的 Python 是它自己內部的版本,那個核心就像個沙盒模式的環境,不能自己擴充套件,結果就是如果你要用內建的 Python 來執行你的 Plug-in,那個功能就是會限制一堆。
像我想要寫一個可以依照 CSS 樣式來子集化字型的功能,這個就沒辦法用內部的 Python 來辦到。
所以最後只剩下一條路,那就是指定自己的 Python 直譯器。
為什麼 Sigil 內部 Python 不支援擴充?
我要使用的是 Python 知名的「fonttools」和「beautifulsoup4」,而這兩個套件在 Sigil 裡面根本沒有,Sigil 也沒有辦法讓你自己去擴充套件資源,雖然查到可以從程式預設的資料夾用手動拷貝的方式新增,但如此一來就失去了隨時擴充的便利性。也許在版本升級後穩定度也會消失。
其實我也很想問原開發者,為什麼不能讓 Python 直接支援安裝擴充套件,這樣一來不就很完美了?
但這封信我還沒有寫,所以在那之前我們得先搞定自己的需求。
在自己的電腦上搭建 Python 環境
如果你確定要和我一樣,在自己的電腦搭建讓 Sigil 執行 Plug-in 的 Python 環境,那麼這一篇也許對你會有幫助。
安裝 Command Line Tools for Xcode
如果你要讓 mac 安裝開源程式、執行終端機指令,就必須安裝這個 CLT 編譯工具,於是打開電腦終端機輸入:
xcode-select --install
終端機位於:/應用程式/工具程式/終端機.app
還有個偷懶的方法,就是你直接安裝下面那個「Homebrew」,Homebrew 會幫你呼叫指令出來安裝 CLT。(真的卡住了你才來用這支指令)
安裝 Homebrew
要安裝開源套件,我們需要一個套件管理工具,這個 Homebrew 有一點像開源套件的 Store 那樣,是一個套件管理中心,你得先把它裝起來才能安裝開源套件,鍵入指令並執行:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
設定 brew 系統路徑
我們在之後的管理路徑會用「brew」來當作 Homebrew 的路徑縮寫,所以我們需要寫入並重設路徑資料,於是:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> ~/.zprofile
指定路徑執行 env:
eval "$(/opt/homebrew/bin/brew shellenv )"
反向查詢 brew 的結果
確定 brew 路徑是否設定成功,在終端機輸入:
brew doctor如果終端機回應「Your system is ready to brew」則代表安裝沒問題,一切完成。
安裝 Python3
現在透過 Homebrew 來安裝 Python 環境:
brew install python檢查版本
安裝完成後可以檢查你安裝完成的 Python 版本:
python3 --version
安裝 Sigil 用的 Python 套件
現在我們要在電腦的使用者 Python 環境建立一個叫「sigil」的虛擬環境,然後把套件安裝進去。這邊的套件是我自己列出來可能會常用的,應該也能夠覆蓋 Sigil 內建 Python 所需:
python3 -m venv sigil && source sigil/bin/activate && pip install fonttools beautifulsoup4 lxml pillow cssutils chardet PySide6
這裡面有兩個套件:fonttools、beautifulsoup4 是我自己的程式中一定會用到的功能。
安裝完成後你會看到終端機會進入虛擬區:
(sigil) username@mac ~ %
未來如果要加入套件
如果以後我們要在這個虛擬環境 (sigil) 加入其他套件,你就會需要先進入虛擬環境:
source sigil/bin/activate
確定進入虛擬環境 (sigil) 後,如果要加入其他套件就是:pip3 install [套件] 即可。
複製 python 路徑
現在我們需要複製你電腦中的 Python 路徑給 Sigil,於是找出 Python 路徑,在終端機執行:
which python3以我的電腦來說:
alrin@mac ~ % which python3
/opt/homebrew/bin/python3 alrin@mac ~ %
中間的那一串「/opt/homebrew/bin/python3」就是我電腦上的 Python 路徑,把它複製下來,貼到 Sigil 的 Plug-in 指定 Python 直譯器的路徑上:

這樣就完成了 Sigil 使用本機的 Python 的修改設定。
第一次執行
因為你把 Python 從 Sigil 改到了自己的電腦環境,第一次呼叫 Plug-in 時,Sigil 要重新的尋找你指定的 Python 環境,會需要一點點時間讓它去找套件。
一但第一次執行完成後,以後再開啟 Sigil 執行 Plug-in 就會像原本內建的那樣快速。
特別說明
macOS 也有內建 Python 但版本老舊,我嘗試的想要幫它升級,好像也升級不了。
而透過 Homebrew 來額外安裝新版的 Python 也是比較主流的作法,但 Homebrew 在新版本的政策中是不會讓你直接在預設的 Python 環境安裝套件,所以你必須要先創造一個虛擬空間才能把額外的套件裝進去。
故我上方的程式才會有一個創建虛擬空間的動作「python3 -m venv sigil」。
一般時候你要用那些套件,你要先進入那個虛擬空間:
source sigil/bin/activate
不過,Sigil 卻會自己去找到套件,你完全不用幫它切換,程式碼裡面也不需要去切換,你只需要在程式直接 import 即可,Sigil 會自己找到它。大心❤️……
















