Skip to content

Cookiecutter template for Python projects integrating multiple modern tools.

License

Notifications You must be signed in to change notification settings

sean2077/cookiecutter-pypackage

Repository files navigation

Cookiecutter PyPackage

集成多个现代工具的 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 的覆盖率测试插件

代码规范工具

  • Isort: import 排序工具
  • Black: 规范代码风格工具
  • Mypy: 静态类型检查工具

第三方CLI框架(可选)

用途:构建 Python 命令行应用程序。

下述 CLI 框架选其一:

工具 优点 缺点 适用的场景
Click 基于 Python 装饰器构建CLI,比较简洁直观;丰富的插件;有生成Sphinx文档的插件
Typer 基于 Python 类型提示构建CLI, 非常简洁直观;基于 Click,继承了 Click 的诸多优点和插件;支持赋予自动补全的能力 更推荐

数据模型库(可选)

下述 CLI 框架选其一:

工具 优点 缺点 适用的场景
attrs, cattrs 声明式定义类
pydantic 支持有效的类型验证;

文档工具(可选)

下述文档工具选其一:

工具 优点 缺点 适用的场景
Sphinx 支持各种复杂的引用;丰富的插件;支持打印命令输出结果 基于reStructuredText, 需要较高的学习成本(但有);本地编辑调试比较麻烦
Mkdocs 基于markdown文档;丰富美观的主题;本地调试比较方便 对 Python 项目的自动文档生成支持得

集成(CI/CD)工具

用途:自动化构建、测试和部署过程。

工具 优点 缺点 适用的场景
Github Actions Github平台原生集成工具 项目托管于 Github
Gitlab CI/CD Gitlab平台原生集成工具 项目托管于 Gitlab

其他集成工具如Travis CITox等都不具有特别明显的优势,不建议使用。