跳转到内容

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://[email protected]/lino-framework/lino.git@91c28245c970210474e2cc29ab2223fa4cf49c4d#egg=lino -e git+git+ssh://[email protected]/lino-framework/book.git@e1ce69aaa712956cf462498aa768d2a0c93ba5ec#egg=lino_book -e git+git+ssh://[email protected]/lino-framework/cosi.git@2e56f2d07a940a42e563cfb8db4fa7444d073e7b#egg=lino_cosi -e [email protected]: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. 布局简介 : 关于布局、详细信息窗口、数据元素和面板。
华夏公益教科书