Python 现代开发学习笔记

(十七)依赖记录、Git 与环境重建

1. 保存声明、锁定结果与源代码

第一章已经区分了依赖声明、解析结果和环境。本项目平时运行只依赖标准库,因此 project.dependencies=[];pytest、Ruff、mypy 与 build 放在 dev 组。给项目添加新开发工具时,可以用 uv add --dev 工具名 更新声明、锁定文件与环境。

# 维护项目时重新解析声明,导出同一份开发依赖给 pip 路线使用。
uv lock
uv export --only-dev --no-emit-project --no-hashes -o requirements-dev.txt
# 换电脑后使用已有锁定记录安装,核对声明没有意外变化。
uv sync --locked
uv run python -m pytest --version

requirements-dev.txt 是导出的安装快照,不包含本地项目,pip 路线另执行 pip install -e .。uv 的 dev 组用于开发环境,不会自动成为包的运行依赖。依赖组

下面这些内容不适合写进源代码提交:

# 项目文件:quality_project/.gitignore
# 环境可由声明重建;运行数据、日志与检查缓存保留在本机。
.venv*/
__pycache__/
*.py[cod]
.pytest_cache/
.ruff_cache/
.mypy_cache/
*.egg-info/
build/
dist/
data/
logs/
.env
.env.*
!.env.example

.env.example 可以保存变量名称和可公开的示例值,真正的 .env 留在本机。.gitignore 控制尚未跟踪的文件,不会自动停止跟踪已经提交的文件;用 git status --short 查看当前状态。gitignore

2. 先查看差异,再形成一次提交

以下操作在自己建立的练习仓库中执行:

# 初始化当前项目,先确认将提交的文件。
git init
git status --short
git diff
# 暂存本次实现、测试和环境记录,再查看暂存区。
git add src tests tools pyproject.toml uv.lock requirements-dev.txt .gitignore .vscode README.md data_sample.py .python-version
git diff --cached
# 检查通过后保存一个能说明行为的提交。
git commit -m "检查书籍库导入、回滚与命令行持久化"
git log --oneline -5

工作目录中的修改先进入暂存区,再由 commit 保存。git diff 比较尚未暂存的改动,git diff --cached 比较暂存区与上次提交。比如修正筛选重复求和时,把实现与能揭示 110 错误的测试放在同一次提交,之后查看历史就能理解行为变化。Git 的修改与暂存

源代码修改、差异检查、暂存、提交,以及新环境按锁定记录重建的过程

笔记正文与全部题解 · Ctrl / ⌘ K