1.1 Python 版本
问题:我的软件应该支持哪些 Python 版本?
回答:Python 2 已于 2020年1月1日停止更新和维护;最新稳定版本为 Python 3.8
1.2 项目布局
项目结构应该保存简单,谨慎使用包和层次结构:过深的层次结构在项目导航时变得复杂;过平的层次结构会使项目变得臃肿。
一个标准的目录结构如下:
.
├── README.md
├── bin
├── data
├── docs
│ ├── conf.py
│ ├── index.rst
│ └── quickstart.rst
├── etc
├── foobar
│ ├── __init__.py
│ ├── cli.py
│ ├── storage.py
│ └── tests
│ ├── __init__.py
│ ├── test_cli.py
│ └── test_storage.py
├── requirements.txt
├── setup.py
├── test-requirements.txt
└── tools
1.3 版本编号
PEP440 中定义版本号应该遵从一下正则表达式的格式:
N[.N]+[{a|b|c|rc}N][.postN][.devN]
需要注意的点:
- 1.2 等于 1.2.0,1.3.4 等于 1.3.4.0 依此类推
- 与 N[.N]+ 相匹配的版本被认为是最终版本
- 基于日期的版本被认为是无效的(如2020.09.01)
- N[.N]+aN 表示 alpha版本 ,版本不稳定或缺少某些功能
- N[.N]+bN 表示 beta版本 ,版本功能已完整,但可能存在 bugs
- .postN 表示 后继版本 ,用来解决发行过程中的小问题
- .devN 表示 开发版本 ,质量基本合格的发布前的版本
更高级的版本号,可以使用 PEP426 中定义的 源码标签
pbr 基于项目的 Git 版本自动生成版本号
1.4 编码风格与自动检查
Python 代码规范 PEP8 标准
- 每个缩进层级使用4个空格。
- 每行最多 79 个字符。
- 顶层的函数或类的定义之间空两行。
- 采用 ASCII 或 UTF-8 编码文件。
- 在文件顶端,注释和文档说明之下,每行 import 语句只导入一个模块,同时按照标准库、第三方库和本地库的导入顺序分组。
- 在小括号、中括号、大括号之间或逗号之前没有额外的空格。
- 类的命名采用骆驼命名法;异常的定义使用 Error 前缀;函数的命名使用下划线分割小写字母;使用下划线开头定义私有的属性或方法。
pep8 工具自动检查 Python 文件是否符号 PEP8 要求。
其他的一些检查编码错误的工具。
- pyflakes
- pylint
- flake8
- hacking