51 lines
2.2 KiB
Bash
51 lines
2.2 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# ============================================================
|
|||
|
|
# geMoldInsight pip 锁文件生成脚本(TECH_DEBT D13)
|
|||
|
|
# ============================================================
|
|||
|
|
#
|
|||
|
|
# 设计要点:
|
|||
|
|
# - 锁文件必须在构建产出的 conda/minimal 环境里生成(只有 geMoldInsight 依赖 + 基础库),
|
|||
|
|
# 本机开发环境的 `pip freeze` 会污染(全开发栈混装),不能直接落锁。
|
|||
|
|
# - 仅在带 moldinsight 的 conda 环境内运行 `pip freeze > deploy/requirements-<x>.lock.txt`
|
|||
|
|
# 才有意义。
|
|||
|
|
# - 锁文件落盘后即可被 CI / 离线构建 / 复现部署直接 `pip install -r` 锁定版本,
|
|||
|
|
# 而不再依赖 >= 下限解析。
|
|||
|
|
#
|
|||
|
|
# 用法(必须在 `gemold` conda 环境内执行):
|
|||
|
|
# bash deploy/generate_lockfiles.sh
|
|||
|
|
#
|
|||
|
|
# 产物:
|
|||
|
|
# deploy/requirements-base.lock.txt
|
|||
|
|
# deploy/requirements-moldinsight.lock.txt
|
|||
|
|
# ============================================================
|
|||
|
|
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
cd "$(dirname "$0")/.."
|
|||
|
|
|
|||
|
|
if ! command -v conda >/dev/null 2>&1; then
|
|||
|
|
echo "[ERROR] conda 未安装或不在 PATH,请先激活 conda 环境(推荐环境名 moldinsight)" >&2
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if [[ "${CONDA_DEFAULT_ENV:-}" != "moldinsight" && "${CONDA_DEFAULT_ENV:-}" != "gemold" ]]; then
|
|||
|
|
echo "[WARN] 当前 conda 环境为 '${CONDA_DEFAULT_ENV:-<未激活>}'," \
|
|||
|
|
"推荐在 'moldinsight' conda 环境内运行(否则锁文件将含宿主污染)" >&2
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "==> 生成 base 锁文件"
|
|||
|
|
pip freeze --exclude pythonocc-core > deploy/requirements-base.lock.txt
|
|||
|
|
|
|||
|
|
echo "==> 生成 moldinsight 锁文件"
|
|||
|
|
pip freeze --exclude pythonocc-core > deploy/requirements-moldinsight.lock.txt
|
|||
|
|
|
|||
|
|
echo
|
|||
|
|
echo "已生成:"
|
|||
|
|
echo " deploy/requirements-base.lock.txt ($(wc -l < deploy/requirements-base.lock.txt) 行)"
|
|||
|
|
echo " deploy/requirements-moldinsight.lock.txt ($(wc -l < deploy/requirements-moldinsight.lock.txt) 行)"
|
|||
|
|
echo
|
|||
|
|
echo "下一步:"
|
|||
|
|
echo " 1. 提交这两个 lock.txt(仅含项目直接依赖 + conda-minimal 环境产出)"
|
|||
|
|
echo " 2. 同步更新 deploy/requirements-base.txt / requirements-moldinsight.txt 的版本下限" \
|
|||
|
|
"为 lock 中的实际版本(或保留 >=,按团队策略)"
|