Files
AgentLab/scripts/lock-deps.sh
T
ThearchyHelios 95ff6470d1 后端依赖锁到测过的那一套:pyproject 卡版本范围,requirements.lock 写精确版本
langgraph 和四个 langchain 包原来完全不写版本,fastapi、sqlalchemy、aiosqlite 只有下限,
uv.lock 还在 .gitignore 里。按旧写法今天新装,22 个包和测过的版本不同,其中 sqlalchemy
会从 2.0.52 跳到 2.1.1。

1. pyproject.toml:LangGraph / LangChain 一族放行到下一个小版本——引擎依赖它们的断点
   格式、interrupt / resume、流式事件和 thinking 块,这些在小版本里也改过行为。aiosqlite
   与 SQLAlchemy 同样卡小版本:db/base.py 给 aiosqlite 0.22 的 stop() 打了补丁,连接池
   强制断开时会走到它。mcp 卡在大版本 1。
2. backend/requirements.lock:后端全部依赖(含间接依赖、全部 extras)的精确版本,
   --universal 跨平台。锁的是 473 条测试跑过的那个 conda 环境:本机要装的 96 个包逐一
   对上,另外 3 个只在 Windows / emscripten 上装。
3. environment.yml 装包时以锁文件为约束(-c),换机器装到的是同一套。
4. scripts/lock-deps.sh 重新生成锁文件:已锁的版本默认不动,升级用 --upgrade-package /
   --upgrade。README 补了用法,补装 extras 的命令都带上 -c。

验证:用同版本 Python 新建空环境,照 conda 的方式按 environment.yml 的 pip 行安装——
装到的 96 个包和测过的环境完全一致,473 passed。
2026-09-26 09:49:16 +08:00

24 lines
1.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 重新生成 backend/requirements.lock:后端全部依赖(含间接依赖、全部 extras)的精确版本。
#
# ./scripts/lock-deps.sh 加了依赖:只补新的,已锁的版本不动
# ./scripts/lock-deps.sh --upgrade-package langgraph 升一个包(连带它必须跟着动的)
# ./scripts/lock-deps.sh --upgrade 全部升到 pyproject 允许的最新
#
# 升级之后跑一遍 pytest 和前端检查再提交——锁文件的意义就是"这一套测过"。
# 锁是跨平台的(--universal),Linux / Windows 上装到的也是同一套版本。
# 需要 uv(brew install uv);装包慢可以在命令前加 UV_INDEX_URL=<镜像地址>。
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
command -v uv >/dev/null || { echo "缺少 uv:https://docs.astral.sh/uv/"; exit 1; }
cd "$ROOT/backend"
uv pip compile pyproject.toml \
--all-extras \
--universal \
--python-version 3.12 \
--custom-compile-command "./scripts/lock-deps.sh" \
-o requirements.lock \
"$@"