uv 由 Astral用 Rust 实现,定位是一个单二进制的工具链,优势就是快!本文假设开发环境使用 uv,并假设开发机与内网机 OS / arch 完全一致,给出可操作的离线迁移方案。
迁移思路
Wheel 离线重装(更通用):外网导出依赖清单 + 下载全部 wheel → 内网用重装;兼容性好、可审可控。
venv 直拷:外网把 .venv当“可搬迁目录”打包 → 内网解压后修配置与软链接;速度快,但对路径/环境更敏感。
方案一:依赖导出 + Wheel 离线重装
1)外网:导出 Python 本体
# 走国内镜像加速下载 python-build-standaloneexportUV_PYTHON_INSTALL_MIRROR="https://mirrors.ustc.edu.cn/github-release/astral-sh/python-build-standalone"# 依赖包下载加速exportUV_DEFAULT_INDEX=https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple# 把 Python 3.13.13 下载并展开到 ./pythonuv python install 3.13.13 --install-dir ./python
这一步解决的是:内网很可能也“没系统 Python/没你想要的版本”,你要带一个可移植的 CPython 过去。
2)外网:拿到依赖清单 + 下载全部 wheel
uv init demo --python 3.13.13cd demo/uv add numpy pandasuv export -o requirements.txt
下载 wheel(venv不自带 pip工具,uv pip没有download选项):
# 让 uv 环境里可用 pipuv add pip --dev# 也可以自行创建venv,开箱包含pip命令uv venv .venv--seed# 下载全部 wheel 到 wheelhouse/uv run pip download \ -i https://pypi.tuna.tsinghua.edu.cn/simple \ -r requirements.txt \ -d wheelhouse/
最终交付物,打包带走即可。
3)内网:离线重装
# 用自带的 CPython 建 venvpython/cpython-3.13.13-linux-x86_64-gnu/bin/python -m venv myvenvsource myvenv/bin/activate# 完全离线安装:只从 wheelhouse 找,不访问网络pip install --no-index --find-links=wheelhouse/ -r requirements.txt
方案二:直接迁移虚拟环境
1)外网:打包
# --relocatable 使创建的虚拟环境成为可迁移的,但是不彻底uv venv --relocatable.venv--python 3.12.0uv synctar zcf demo.tar.gz .venv
2)内网: 修链接
解压并修改 .venv/pyvenv.cfg,将home地址修改为内网python的bin目录:
home = /home/user1/python/cpython-3.13.13-linux-x86_64-gnu/bin
如果 .venv/bin/python软链接指向旧路径(ls -l 能看到),删掉重建:
rm -f .venv/bin/pythonln -s /home/user1/python/cpython-3.12.0-linux-x86_64-gnu/bin/python3.12 .venv/bin/python# 进入环境source .venv/bin/activate
注意事项
保持OS/glibc 一致,该方法不适合 “外网 Windows 11 + 内网 CentOS 7” 这种组合。