一个旨在严格工程标准和自动化的现代化、工业级 Python 项目模板。
注意: 在初始化新项目后,请删除本节内容或
init_project.py脚本。
点击 [Use this template] 按钮创建一个新的代码仓库。
我们提供了一个脚本来自动完成重命名和配置过程。
-
运行初始化脚本:
# 确保已安装 Python 3 python init_project.py按照提示输入你的 项目名称、包名称、作者姓名 和 GitHub 用户名。
-
脚本会自动执行以下操作:
- 重命名源代码目录(
src/my_package->src/your_pkg)。 - 更新
pyproject.toml、mkdocs.yml、Dockerfile和 GitHub 模板文件。 - 替换
SECURITY.md和CODE_OF_CONDUCT.md中的作者邮箱。 - 更新引用信息和文档链接。
- 重置
uv.lock以便重新锁定依赖。
- 重命名源代码目录(
-
完成设置:
# 安装最新依赖 uv sync --dev # 验证一切是否正常 uv run pytest # 清理脚本 rm init_project.py # 提交初始化的项目 git add . git commit -m "chore: initialize project from template"
要启用 Codecov 覆盖率报告:
- 前往 Codecov 并为你的新仓库启用它。
- 获取上传令牌(upload token)。
- 前往 GitHub 仓库的 Settings -> Secrets and variables -> Actions。
- 添加一个名为
CODECOV_TOKEN的新仓库密钥。
- 前往 Settings -> Security -> Code security and analysis。
- 启用 Private vulnerability reporting。
(这确保了 "Report a vulnerability" 按钮能像
SECURITY.md中描述的那样工作)
标签同步工作流会在首次推送到 main 分支时自动运行。
- 它将 删除 默认的 GitHub 标签(如 bug, enhancement)。
- 它将 创建 在
.github/labels.yml中定义的标准化标签(如kind/bug,area/core,priority/high)。 - 如果需要手动触发:前往 Actions -> Sync Labels -> Run workflow。
- 包管理器: uv - 超快速的依赖管理工具。
- Linter & Formatter: ruff - 集成式工具,替代 Black、Isort 和 Flake8。
- 类型检查: mypy - 已配置为 strict mode(严格模式)。
- 测试: pytest + pytest-cov。
- 自动化:
- Pre-commit hooks: 在提交前确保代码质量。
- GitHub Actions:
- 自动测试与代码检查。
- Stale Bot: 关闭长期不活跃的 Issues。
- Labeler: 根据更改的文件自动标记 PR。
- Label Sync: 强制统一仓库的标签标准。
- Release Drafter: 根据 PR 标签自动以此撰写发布说明。
- 社区标准:
- 开箱即用的 Issue 模板(Bug 报告、功能请求)。
- 带有检查清单的 PR 模板。
- 安全策略与行为准则。
- Python 3.12+
- uv
# 安装 uv
pip install uv# 克隆仓库
git clone [https://github.com/your-username/your-new-project.git](https://github.com/your-username/your-new-project.git)
cd your-new-project
# 安装依赖(自动创建虚拟环境)
uv sync --dev
# 安装 pre-commit 钩子
uv run pre-commit install我们使用 MkDocs 构建文档。
# 1. 安装文档依赖
uv sync --extra docs
# 2. 启动本地服务器(实时预览)
uv run mkdocs serve在浏览器中打开 http://127.0.0.1:8000
我们使用 uv run 在虚拟环境中执行命令。
| 任务 | 命令 |
|---|---|
| 运行测试 | uv run pytest |
| 代码检查 (Lint) | uv run ruff check . |
| 自动修复 Lint | uv run ruff check . --fix |
| 代码格式化 | uv run ruff format . |
| 类型检查 | uv run mypy . |
.
├── .github/ # GitHub Actions, 模板, 标签配置
├── src/
│ └── my_package/ # 源代码(init 脚本会自动重命名此目录)
├── tests/ # 测试套件
├── pyproject.toml # 项目配置 (Ruff, Mypy, Pytest)
├── .pre-commit-config.yaml # Pre-commit 钩子配置
├── uv.lock # 依赖锁定文件
└── init_project.py # 初始化脚本(使用后删除)
本项目包含一个基于 python:3.12-slim-bookworm 的多阶段 Dockerfile,针对体积和安全性进行了优化。
docker build -t my_package_image .docker run --rm my_package_image请阅读 CONTRIBUTING.md 了解我们的行为准则以及提交拉取请求(Pull Request)的流程。
本项目基于 MIT 许可证开源 - 详情请参阅 LICENSE 文件。