跳轉到內容

Lino 開發人員指南

25% developed
來自 Wikibooks,開放世界的開放書籍

這是 Lino 開發人員的中心集會地。入門部分對系統管理員也很有用。

本文件介紹如何安裝 Lino。系統要求。設定 Python 環境。執行您的第一個 Lino 站點。

它假設您至少熟悉 Linux shell 的基本檔案操作,如 lscpmkdirrmdir、檔案許可權、環境變數、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

設定 Python 環境

[編輯 | 編輯原始碼]

在您將 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 時,一個快速的測試方法是向 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。

執行您的第一個 Lino 站點

[編輯 | 編輯原始碼]

現在你可以 cd 到 lino_book.projects 的任何子目錄並執行開發伺服器

$ cd lino_book/projects/min1
$ python manage.py runserver

現在啟動你的瀏覽器,指向127.0.0.1:8000/並隨意玩玩。

不要只停留在 min1,也嘗試一下 lino_book.projects 下面的其他專案。它們都不是什麼“殺手級應用”,只是用於測試和練習的小專案。

下一步

[編輯 | 編輯原始碼]

下一步,我們建議你 建立一個本地 Lino 專案。


  1. 建立本地 Lino 專案 : 你機器上執行的第一個 Lino 應用程式。比 Django 更容易。一個 settings.py 和一個 manage.py。
  2. 初始化演示資料庫 : 關於 initdb 和 initdb_demo 命令的更多資訊。

你的第一個應用程式

[編輯 | 編輯原始碼]
  1. 編寫你自己的 Python fixtures : 玩玩 Python fixtures。編寫你自己的 Python fixtures。
  2. Lino Polls 教程 : 在本節中,我們將把 Django 教程中的“Polls”應用程式轉換為一個 Lino 應用程式。這將說明 Lino 和 Django 之間的一些區別。
  3. 表格簡介 : 模型、表格和檢視。什麼是表格?設計你的表格。在沒有 Web 伺服器的情況下使用表格。
  4. 佈局簡介 : 關於佈局、詳細資訊視窗、資料元素和麵板。
華夏公益教科書