
很多项目“在作者电脑上能跑”换一台机器就开始报错。问题往往不是业务代码多复杂而是配置散落在聊天记录、README 角落、个人 shell 历史和一些没有提交的本地文件里。这篇文章分享一套我觉得很适合 Python/后端/小工具项目的轻量交付清单。目标很简单让别人也包括三个月后的自己克隆仓库后能快速知道需要哪些配置、怎么启动、哪里出错先看什么。一、先定一个原则README 讲流程配置样例进仓库README 里当然可以写“需要配置数据库地址、API Key、模型路径”但不要把真正的配置值塞进去更不要让读者在一大段文字里手动猜变量名。更稳的做法是.env本地真实配置不提交.env.example配置样例提交到仓库README.md只说明复制、填写、启动的流程Makefile或脚本把常用命令固定下来。这样项目不会因为 README 改来改去而越来越乱也能避免误提交敏感信息。二、.env.example 要写到“能照着填”一个实用的.env.example不只是变量名列表最好包含默认值、注释和边界提醒。例如# 应用运行环境development / production APP_ENVdevelopment # 服务监听地址。本地开发一般不用改 HOST127.0.0.1 PORT8000 # 数据库连接。真实密码不要提交到仓库 DATABASE_URLpostgresql://user:***localhost:5432/app_db # 第三方服务 Key。没有就留空代码里要能给出明确错误提示 OPENAI_API_KEY*** # 日志等级DEBUG / INFO / WARNING / ERROR LOG_LEVELINFO这里有几个小细节很重要变量名尽量稳定不要今天叫DB_URL明天又叫DATABASE_URL能给本地默认值的就给默认值减少新手启动成本涉及密钥、Token、密码的地方只放占位符如果某个变量是可选项最好在注释里说清楚。三、README 的启动段只保留最短路径README 最怕把所有历史方案都堆上去pip 一套、conda 一套、Docker 一套、手动命令又一套。读者不知道哪个才是推荐路径。我更喜欢把“最快跑起来”的路径放在最前面例如## 本地启动 # 1. 安装依赖 python -m venv .venv source .venv/bin/activate pip install -r requirements.txt # 2. 准备配置 cp .env.example .env # 按需编辑 .env # 3. 启动服务 make dev如果项目支持 Docker、conda 或 uv可以放在后面的“其他启动方式”里。核心是先给一个官方推荐路径不要让读者自己做选择题。四、用 Makefile 固定常用动作很多团队会说“启动命令写在 README 里了”。问题是README 很容易过期。把命令沉淀成 Makefile至少有两个好处命令短、改动集中。.PHONY: dev test lint format clean dev: python -m app.main test: pytest -q lint: ruff check . format: ruff format . clean: find . -type d -name __pycache__ -prune -exec rm -rf {} 这样 README 里只需要写make dev # 启动开发环境 make test # 跑测试 make lint # 静态检查哪怕以后从pytest换成别的测试命令README 也不用大面积修改。五、把“跑不起来先看哪里”写出来很多项目的排障说明比功能介绍更有价值。建议在 README 里加一个很短的 FAQ端口被占用修改.env里的PORT数据库连不上检查DATABASE_URL、数据库是否启动、网络是否可达模块找不到确认已经进入虚拟环境并安装依赖第三方接口报鉴权错误检查对应 API Key 是否为空、是否复制了多余空格Windows/Linux 命令不同给出替代命令或者说明推荐环境。这类内容看起来不起眼但能显著减少重复沟通。尤其是开源项目维护者不可能每次都在 issue 里重新解释一遍。六、提交前加一道保护别让 .env 混进 Git.gitignore至少应该包含.env .env.* !.env.example .venv/ __pycache__/ .pytest_cache/如果团队里经常有人误提交密钥可以考虑再加pre-commit检查。不是为了显得工程化而是为了把低级事故挡在提交之前。一个基本的.pre-commit-config.yaml可以先从格式化、尾随空格、文件结尾换行这类小规则开始不必一上来就做得很重。七、我常用的一页交付清单每次整理项目时可以直接对照下面这张清单仓库里有.env.example并且变量注释清楚.env、虚拟环境、缓存目录已加入.gitignoreREADME 顶部有 35 步本地启动流程常用命令被收敛到make dev/test/lint/format或等价脚本依赖安装方式明确不同时推荐太多路线最常见的 35 个报错有排障说明没有把真实 Token、密码、内部地址写进文档新同事或朋友按 README 操作过一次能跑通。结语项目交付体验并不一定要靠很重的平台或复杂流程。很多时候只要把配置样例、启动命令、排障说明和忽略规则补齐项目就会从“只能我自己跑”变成“别人也敢接手”。如果你维护过开源仓库或团队内部工具最希望 README 里提前写清楚哪一类信息欢迎分享你的踩坑点。