5.7. Anaconda 附加组件结构
Anaconda 附加组件是 Python 软件包,其中包含含有 __init__.py
和其他源目录(子软件包)的目录。由于 Python 只允许您导入每个软件包名称一次,因此请为软件包顶级目录指定唯一的名称。您可以使用任意名称,因为附加组件都会被加载,而无论它们的名称是什么,唯一的要求是它们必须被放在特定的目录中。
对附加组件的建议的命名约定类似于 Java 软件包或 D-Bus 服务名称。
要使目录名称成为 Python 软件包的唯一标识符,请使用组织的反向域名作为加载项名称的前缀,并使用下划线(_
)而不是点。例如,com_example_hello_world
。
重要
确保在每个目录中创建一个 __init__.py
文件。缺少这个文件的目录被视为无效的 Python 软件包。
在编写附加组件时,请确定以下几项:
-
对每个界面(图形界面和文本界面)的支持可由单独的子软件包提供,对于图形界面,这些子软件包被命名为
gui
,对于基于文本的界面,这些子软件包被命名为tui
。 -
gui
和tui
软件包包含一个spokes
子软件包。[1] - 软件包中包含的模块有一个任意名称。
-
gui/
和tui/
目录包含带有任何名称的 Python 模块。 - 有的服务可以执行附加组件的实际工作。可使用 Python 或者其他任何语言编写该服务。
- 该服务实现了对 D-Bus 和 Kickstart 的支持。
- 这个附加组件包含启用自动启动该服务的文件。
以下是支持每个接口(Kickstart、GUI 和 TUI)的附加目录结构示例:
例 5.1. 附加组件结构示例
com_example_hello_world ├─ gui │ ├─ init.py │ └─ spokes │ └─ init.py └─ tui ├─ init.py └─ spokes └─ init.py
每个软件包必须至少包含一个带有任意名称的模块,该名称定义了从 API 中定义的一个或多个类继承的类。
注意
如果附加组件需要定义一个新类别,您可以包含类别子软件包,但不建议这样做。