LingBot-Vision 离线环境安装的依赖打包与迁移

文章导读
目标机器不能联网时,LingBot-Vision 无法通过常规在线安装方式补齐依赖,但可以把整套安装要素拆成两个部分:Python 依赖包和模型文件。依赖包在联网机器上用 pip 下载并固化为本地 wheel 源,模型文件通过压缩传输和校验后放到内网指定目录。整个迁移过程可以提前验证,避免把缺包、缺模型的问题带到离线现场。
📋 目录
  1. A 在联网机器上导出依赖列表
  2. B 用pip download打包离线wheel包
  3. C 拷贝LingBot-Vision模型与启动脚本
  4. D 在离线机器上安装并启动服务
A A

目标机器不能联网时,LingBot-Vision 无法通过常规在线安装方式补齐依赖,但可以把整套安装要素拆成两个部分:Python 依赖包和模型文件。依赖包在联网机器上用 pip 下载并固化为本地 wheel 源,模型文件通过压缩传输和校验后放到内网指定目录。整个迁移过程可以提前验证,避免把缺包、缺模型的问题带到离线现场。

适用场景:目标服务器无外网、内网无 PyPI 镜像,且需要安装 LingBot-Vision。操作动作:在联网机器上用 pip freeze 或 pipreqs 导出依赖列表,再用 pip download 按平台参数拉取 wheel 包,连同模型文件打包拷贝到内网。验证方式:离线机器安装时指定 PIP_FIND_LINKS 指向 wheel 目录,启动后用 curl 检查健康接口。风险边界:依赖列表必须与实际运行环境匹配,模型传输后需做完整性校验。

在联网机器上导出依赖列表

先确定 LingBot-Vision 实际依赖哪些 Python 包。如果开发环境已经能运行项目,用 pip freeze 导出当前虚拟环境中的所有包;如果只想保留项目直接引用的包,用 pipreqs 扫描项目目录生成最小依赖列表。

# 方式一:从当前环境导出全部包
pip freeze > requirements.txt

# 方式二:按项目源码推断依赖
pip install pipreqs
pipreqs /path/to/lingbot-vision `--force`

记录 Python 版本和平台信息,例如 python `--version`uname -m、操作系统发行版。建议把这两条信息连同 requirements.txt 一起保存,便于在离线机器上确认环境是否一致。

用pip download打包离线wheel包

在联网机器上执行 pip download,把依赖列表指定的包全部下载为 wheel 文件,形成离线安装源。为了减少跨平台兼容问题,建议预先指定目标机器的操作系统、架构和 Python 版本。

mkdir -p wheelhouse
pip download \
  -r requirements.txt \
  -d wheelhouse \
  `--only-binary`=:all: \
  `--platform` manylinux2014_x86_64 \
  `--python-version` 3.10 \
  `--implementation` cp \
  `--abi` cp310

上例中 `--platform``--python-version` 等参数需要按目标机器实际环境调整,可先查看目标机器的 python3 -c "import platform; print(platform.platform())" 输出。如果包含纯 Python 包,`--only-binary`=:all: 可能漏掉只有源码包的依赖,此时可去掉该参数,允许下载 .tar.gz 源码包,离线安装时再编译。

下载完成后生成校验文件,防止传输过程中文件损坏或遗漏。

cd wheelhouse
sha256sum *.whl *.tar.gz > SHA256SUMS
cd ..

拷贝LingBot-Vision模型与启动脚本

LingBot-Vision 的模型文件通常是一个独立的目录,包含多个权重文件和配置文件。不要直接拷贝零散文件,建议先打成 tar 包再传输,这样能保留目录结构和符号链接。

LingBot-Vision 离线环境安装的依赖打包与迁移
tar -czf lingbot_vision_models.tar.gz /path/to/models

传输前在联网机器上生成校验值,传输到内网后再重新计算并对比。使用 shasum 记录完整性结果,确保模型包没有缺失或数据损坏。

shasum -a 256 lingbot_vision_models.tar.gz > models.sha256
# 拷贝 models.sha256 到离线机器,传输完成后执行:
shasum -a 256 -c models.sha256

同时把启动脚本、配置文件、requirements.txt 和上面的 wheelhouse 目录一并拷贝。建议把所有材料放到同一个目录下,例如 lingbot_offline/,内网机器上直接解压即可。

在离线机器上安装并启动服务

离线机器上先确认 Python 版本与打包时一致,然后设置 PIP_FIND_LINKS 指向 wheel 包目录执行安装。这样可以告诉 pip 只从本地目录寻找依赖,不需要访问外网。

export PIP_FIND_LINKS=/path/to/lingbot_offline/wheelhouse
pip install `--no-index` -r requirements.txt

如果某些包必须源码编译,添加 `--no-binary` :all: 或单独指定包名。安装完成后解压模型包到启动脚本约定的路径。

tar -xzf lingbot_vision_models.tar.gz -C /path/to/models

启动 LingBot-Vision 服务后,用 curl 检查健康接口。假设健康检查地址为 http://127.0.0.1:8080/health,执行:

curl -i http://127.0.0.1:8080/health

返回 HTTP 200 且 body 包含预期状态字段,说明离线安装链路可用。如果接口不通,先看服务日志;常见原因是依赖缺失、模型路径不对或平台参数不匹配。建议在正式交付前,用一台与目标环境一致的内网测试机完整跑一遍这个流程,确认后再批量部署。