Lino 開發人員指南
這是 Lino 開發人員的中心集會地。入門部分對系統管理員也很有用。
本文件介紹如何安裝 Lino。系統要求。設定 Python 環境。執行您的第一個 Lino 站點。
它假設您至少熟悉 Linux shell 的基本檔案操作,如 ls、cp、mkdir、rmdir、檔案許可權、環境變數、bash 指令碼等。否則,我們建議您瞭解在 UNIX shell 中的工作原理。
理論上 Lino 在 Python 3 下執行,但我們目前仍然推薦使用 Python 2。如果您只是想讓它工作,那麼選擇 Python 2。否則,請考慮嘗試在 Python 3 下使用它並報告您的體驗。
我們假設您已安裝 pip。pip 不包含在 Python 2 中,但它已成為事實上的標準。以下是在 Debian 上安裝它的方法
$ sudo apt-get install python-pip
您需要在您的計算機上安裝 git 才能獲取原始檔
$ sudo apt-get install git
Lino 需要 lxml,在您使用 pip 安裝它之前,它還有一些額外的要求
$ sudo apt-get build-dep lxml
注意:如果您收到錯誤訊息“您必須在 sources.list 中新增一些‘source’ URI”,那麼(在 Ubuntu 中)開啟“系統設定”‣“軟體和更新”並確保選中“原始碼”。
使用 lino.modlib.weasyprint 的應用程式的類似要求
$ sudo apt-get install libffi-dev
在您將 Lino 實際安裝到您的 Python 中之前,我們建議您使用 virtualenv 建立一個新的 Python 環境。在 Debian 系統上,這意味著類似以下操作
$ sudo pip install virtualenv
$ mkdir ~/virtualenvs
$ virtualenv ~/virtualenvs/a
要啟用此環境,您需要鍵入
$ . ~/virtualenvs/a/bin/activate
在正常情況下,所有 Python 專案都可以使用相同的虛擬環境。因此,您可能希望將上面的行新增到您的 .bashrc 檔案中
$ echo ". ~/virtualenvs/a/bin/activate" >> ~/.bashrc
注意
我們選擇 a 作為此環境的名稱。您可能更喜歡 lino、dev 或 my_first_environment。
如果您不熟悉 virtualenvs,那麼請閱讀 Dan Poirier 的文章《管理多個 Python 專案:虛擬環境》,他在文章中解釋了什麼是虛擬環境以及為什麼要使用它們。
點 (.) 是 source 命令的同義詞。如果您不知道它,請閱讀手冊頁和《“source”的作用是什麼?》。
您可以使用 deactivate 命令停用虛擬環境。這會將您切換回機器的全域性環境。您可以透過簡單地啟用另一個 virtualenv 來切換到另一個 virtualenv。您不需要在切換之前停用當前的 virtualenv。您永遠不應該重新命名 virtualenv(它們不是為此設計的),但您可以輕鬆地建立一個新的 virtualenv 並刪除舊的 virtualenv。
理論上您可以使用 pip install lino 安裝 Lino,但此方法目前沒有經過充分的測試。因此,在大多數情況下,我們目前建議使用開發版本,因為您可能希望在 Lino 的最新功能釋出到 PyPI 之前使用它們。
建立一個目錄(例如 ~/repositories)用於儲存您對版本控制軟體專案的版本控制軟體專案的工作副本,cd 到該目錄並執行
$ mkdir ~/repositories
$ cd ~/repositories
$ git clone https://github.com/lino-framework/lino.git
$ git clone https://github.com/lino-framework/xl.git
$ git clone https://github.com/lino-framework/cosi.git
$ git clone https://github.com/lino-framework/book.git
現在您應該有四個名為 ~/repositories/lino、~/repositories/xl、~/repositories/cosi 和 ~/repositories/book 的目錄,每個目錄都包含一個 setup.py 檔案和一個包含其他檔案和目錄的完整樹結構。
這裡一個可能的問題是 Lino 儲存庫的大小很大。如果您只是想試用最新版本,並且永遠不會提交任何拉取請求,那麼您可以透過新增 --depth 1 選項(如 stackoverflow 上的這個問題或 Nicola Paolucci 的部落格文章《如何處理大型 git 儲存庫》中所述)將其從 300MB 減少到 63MB。
現在您已準備好“安裝”Lino,即告訴您的 Python 直譯器原始檔在哪裡,以便您可以在任何 Python 程式中從它們匯入。
命令
$ pip install -e lino
$ pip install -e xl
$ pip install -e cosi
$ pip install -e book
這些命令需要一些時間,因為它們將下載並安裝 Lino 所需的所有 Python 包。
注意,pip 的 -e 命令列開關會導致它使用“開發”模式。開發模式意味著這些模組“直接從原始碼”執行。pip 不會將原始碼複製到您的 Python site_packages 中,而是新增指向它們的連結。-e 之後的第一個引數不是專案名稱,而是目錄。
當您想檢視是否已安裝 Lino 時,一個快速的測試方法是向 Lino 說“你好”
$ python -m lino.hello
Lino 1.7.6, Django 1.9.11, Python 2.7.12, Babel 2.3.4, Jinja 2.8, Sphinx 1.5a3, python-dateutil 2.6.0, OdfPy ODFPY/1.3.3, docutils 0.12, suds 0.4, PyYaml 3.12, Appy 0.9.4 (2016/07/28 13:39)
如果您不知道:Python 的 -m 命令列開關指示它只匯入指定的模組(此處為 lino.hello),然後返回到命令列。
實際上,當使用 Lino 的開發人員安裝時,Lino 版本號是不夠的。Lino 程式碼庫每天幾乎都會發生變化,而版本號只會在我們向 PyPI 釋出官方版本時才會增加。
因此,作為開發人員,您只需經常升級您的程式碼庫副本。以下是一系列獲取最新版本的快速命令
$ cd ~/repositories/lino ; git pull
$ cd ~/repositories/xl ; git pull
$ cd ~/repositories/cosi ; git pull
$ cd ~/repositories/book ; git pull
$ find ~/repositories -name '*.pyc' -delete
此過程在《如何更新您的程式碼庫副本》中進行了全面描述。
使用虛擬環境似乎是新手面臨的最大挑戰之一。以下是一些診斷技巧。
如何檢視當前的 virtualenv
$ echo $VIRTUAL_ENV
/home/luc/virtualenvs/a
$ which python
/home/luc/virtualenvs/a/bin/python
如何檢視當前 virtualenv 中安裝的內容
$ pip freeze
輸出將包含大約 60 行文字,以下是摘錄
alabaster==0.7.9 appy==0.9.4 argh==0.26.2 ... Django==1.9.10 ... future==0.15.2 ... -e git+git+ssh://git@github.com/lino-framework/lino.git@91c28245c970210474e2cc29ab2223fa4cf49c4d#egg=lino -e git+git+ssh://git@github.com/lino-framework/book.git@e1ce69aaa712956cf462498aa768d2a0c93ba5ec#egg=lino_book -e git+git+ssh://git@github.com/lino-framework/cosi.git@2e56f2d07a940a42e563cfb8db4fa7444d073e7b#egg=lino_cosi -e git+git@github.com:lino-framework/xl.git@db3875a6f7d449490537d68b08daf471a7f0e573#egg=lino_xl lxml==3.6.4 ... Unipath==1.1 WeasyPrint==0.31 webencodings==0.5 初始化演示資料庫 Lino Book 包含一系列演示專案,每個專案都有自己的資料庫。在您使用這些專案之前,需要初始化這些資料庫。
最簡單的方法是在您的 Lino Book 儲存庫副本中執行 inv initdb 命令
$ cd ~/repositories/book
$ inv initdb
inv 命令已安裝在您的系統上(更準確地說:安裝在您的 Python 環境中),由 invoke 包安裝,invoke 包本身是 Luc 開發的另一個 Python 包 atelier 所需要的。
inv 命令是一種類似於 make 的工具,它透過查詢名為 tasks.py 的檔案來工作。Lino 儲存庫包含這樣一個檔案,該檔案使用 lino.invlib,它(以及它繼承自 atelier.invlib 的內容)定義了一系列命令,例如 inv initdb 或 inv test。
現在你可以 cd 到 lino_book.projects 的任何子目錄並執行開發伺服器
$ cd lino_book/projects/min1
$ python manage.py runserver
現在啟動你的瀏覽器,指向127.0.0.1:8000/並隨意玩玩。
不要只停留在 min1,也嘗試一下 lino_book.projects 下面的其他專案。它們都不是什麼“殺手級應用”,只是用於測試和練習的小專案。
下一步,我們建議你 建立一個本地 Lino 專案。
- 建立本地 Lino 專案 : 你機器上執行的第一個 Lino 應用程式。比 Django 更容易。一個 settings.py 和一個 manage.py。
- 初始化演示資料庫 : 關於 initdb 和 initdb_demo 命令的更多資訊。
- 編寫你自己的 Python fixtures : 玩玩 Python fixtures。編寫你自己的 Python fixtures。
- Lino Polls 教程 : 在本節中,我們將把 Django 教程中的“Polls”應用程式轉換為一個 Lino 應用程式。這將說明 Lino 和 Django 之間的一些區別。
- 表格簡介 : 模型、表格和檢視。什麼是表格?設計你的表格。在沒有 Web 伺服器的情況下使用表格。
- 佈局簡介 : 關於佈局、詳細資訊視窗、資料元素和麵板。