集成多个现代工具的 Python 项目的 cookiecutter 模板.
安装 cookiecutter (1.7+):
pip install -U cookiecutter
构建 Python 项目:
cookiecutter https://github.com/waynerv/cookiecutter-pypackage.git
- Github
- Gitlab
- Poetry: 管理依赖、构建和发布.
- bump2version: 一行命令修改项目中所有指定位置的版本号.
- Pre-commit: 提交代码前自动执行代码检查、代码格式化等操作.
- pipx: 在隔离环境中安装和运行 Python 应用程序.
用途:构建单元测试、覆盖率测试等
- Pytest: 构建 Python 项目的单元测试.
- Pytest-cov: Pytest 的覆盖率测试插件
用途:构建 Python 命令行应用程序。
下述 CLI 框架选其一:
工具 | 优点 | 缺点 | 适用的场景 |
---|---|---|---|
Click | 基于 Python 装饰器构建CLI,比较简洁直观;丰富的插件;有生成Sphinx文档的插件 | ||
Typer | 基于 Python 类型提示构建CLI, 非常简洁直观;基于 Click,继承了 Click 的诸多优点和插件;支持赋予自动补全的能力 | 更推荐 |
下述 CLI 框架选其一:
工具 | 优点 | 缺点 | 适用的场景 |
---|---|---|---|
attrs, cattrs | 声明式定义类 | ||
pydantic | 支持有效的类型验证; |
下述文档工具选其一:
工具 | 优点 | 缺点 | 适用的场景 |
---|---|---|---|
Sphinx | 支持各种复杂的引用;丰富的插件;支持打印命令输出结果 | 基于reStructuredText, 需要较高的学习成本(但有);本地编辑调试比较麻烦 | |
Mkdocs | 基于markdown文档;丰富美观的主题;本地调试比较方便 | 对 Python 项目的自动文档生成支持得 |
用途:自动化构建、测试和部署过程。
工具 | 优点 | 缺点 | 适用的场景 |
---|---|---|---|
Github Actions | Github平台原生集成工具 | 项目托管于 Github | |
Gitlab CI/CD | Gitlab平台原生集成工具 | 项目托管于 Gitlab |