基于 [copier](https://copier.readthedocs.io/) 的通用 Python 项目模板。
Project description
coopie
基于 copier 的通用 Python 项目模板。
基于 pyflowx 项目实践,生成开箱即用的 Python 项目骨架。
特性
- 构建工具链:hatchling + uv + ruff + pyrefly + pytest + coverage
- 多版本支持:Python 3.8 ~ 3.14(可配置范围)
- CI/CD:GitHub Actions(lint + typecheck + 多版本测试 + 自动发布)
- 容器化:Dockerfile(含国内镜像源配置)
- 文档:Sphinx + ReadTheDocs(中文 zh_CN)
- 代码质量:pre-commit 钩子 + ruff lint/format
- 多版本测试:tox + tox-uv
- 开发规则:.trae 规则集(自驱动开发 + Python 规范 + 提交规范)
- 项目结构:src layout + py.typed 标记
- 模板更新:支持
copier update增量合并
用法
创建新项目
# 方式一:uvx(推荐,无需预装)
uvx copier copy f:\Dev\coopie my-new-project
# 方式二:pip
pip install copier
copier copy f:\Dev\coopie my-new-project
# 从 git 仓库创建(推送到远程后)
uvx copier copy https://github.com/gookeryoung/coopie.git my-new-project
更新已有项目
当模板更新后,可在已生成的项目目录中运行:
cd my-new-project
uvx copier update
Copier 会读取 .copier-answers.yml 中的上一次答案,对比模板差异,增量合并更新。
可配置选项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
project_name |
str | my-project |
项目名称 |
package_name |
str | 自动派生 | Python 包名(导入标识符) |
description |
str | - | 项目简短描述 |
author_name |
str | - | 作者名称 |
author_email |
str | - | 作者邮箱 |
min_python_version |
str | 3.8 |
最低 Python 版本 |
max_python_version |
str | 3.14 |
最高 Python 版本 |
license |
str | MIT |
许可证(MIT/Apache-2.0/GPL-3.0/None) |
use_docs |
bool | true |
Sphinx 文档配置 |
use_docker |
bool | true |
Dockerfile |
use_cicd |
bool | true |
GitHub Actions CI/CD |
use_tox |
bool | true |
tox 多版本测试 |
use_domestic_mirrors |
bool | true |
国内镜像源 |
coverage_fail_under |
int | 95 |
覆盖率阈值 |
生成文件清单
my-project/
├── .copier-answers.yml # Copier 答案(用于 copier update)
├── .dockerignore # Docker 忽略文件(use_docker)
├── .gitignore # Git 忽略文件
├── .pre-commit-config.yaml # pre-commit 钩子配置
├── .python-version # Python 版本(uv/pyenv 用)
├── .readthedocs.yaml # ReadTheDocs 配置(use_docs)
├── .trae/ # Trae 开发规则
│ ├── .ignore
│ └── rules/
│ ├── self-driven.md # 自驱动开发规则
│ ├── dev-workflow.md # 开发流程约束
│ ├── git-commit-message.md # 提交信息规范
│ └── python-standards.md # Python 开发规范
├── .vscode/settings.json # VS Code 配置
├── Dockerfile # CI/容器化用(use_docker)
├── LICENSE # 许可证文件
├── README.md # 项目 README
├── docs/ # Sphinx 文档(use_docs)
│ ├── _static/.gitkeep
│ ├── api.rst
│ ├── changelog.rst
│ ├── conf.py
│ └── index.rst
├── pyproject.toml # 项目配置(构建/依赖/工具链)
├── src/
│ └── my_package/
│ ├── __init__.py
│ └── py.typed # PEP 561 类型标记
├── tests/
│ ├── __init__.py
│ └── test_my_package.py # 冒烟测试
└── tox.ini # 多版本测试配置(use_tox)
生成后步骤
cd my-project
uv sync --extra dev # 安装开发依赖
uv run pytest # 运行测试
git init # 初始化 git 仓库
git add -A
git commit -m "feat: 初始化项目"
设计依据
本模板提炼自 pyflowx 项目的工程实践:
- src layout:避免导入歧义,与 pyflowx 一致
- hatchling 构建后端:快速、现代、PEP 621 兼容
- uv 依赖管理:比 pip 快 10-100x,支持 lockfile
- ruff:集成 lint + format,替代 flake8 + isort + black
- pyrefly:Meta 开源的快速类型检查器
- .trae 规则:AI 辅助开发的行为约束(自驱动 + 代码规范)
- 国内镜像源:pip/uv 清华源、apt 阿里云、Docker 道云
许可证
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
coopie-0.1.10.tar.gz
(124.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file coopie-0.1.10.tar.gz.
File metadata
- Download URL: coopie-0.1.10.tar.gz
- Upload date:
- Size: 124.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bdb731a134641a448fa79032f7f8dd89fdf11f6ee5d75bb84fe7f87a666ab01
|
|
| MD5 |
4f28e55950cd030fd8361aa3687e2988
|
|
| BLAKE2b-256 |
1c5b549877a306b99bf8a5b08c32fba4b68cc3bb4c1d188ce9ef8b9918cb92b1
|
File details
Details for the file coopie-0.1.10-py3-none-any.whl.
File metadata
- Download URL: coopie-0.1.10-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d286ca7b0e6c8d8c0356083451e6a6b846fff722f6b67e4afabdf728bc88d38
|
|
| MD5 |
f8797b7a8032c9c151e6f4e83cd53d96
|
|
| BLAKE2b-256 |
c61c8272d4586552fcf818785bd9b4ff505c4988eb3cb89c170e5a5b0e126bee
|