pip download 通常被用于同环境依赖迁移(如 Linux → Linux)。但通过指定 --platform 等参数,我们可以打破环境限制,实现异构环境迁移(如 Windows → Linux)。
⚠️ 重要提醒本文只是技术验证,更推荐基于同环境依赖迁移!!!初衷就是懒,不想部署生产环境一样的开发环境。
一、跨平台迁移全景流程
以下是从 Windows 开发机向 Linux 服务器迁移依赖的标准作业流程:
1. 确认目标环境标签
在 Linux 服务器上执行以下命令,获取系统兼容标签:
# 查看系统版本ldd --version# 查看 pip 支持的标签列表pip debug --verbose
输出结果示例:
Compatible tags: 828 cp313-cp313-manylinux_2_28_x86_64 cp313-cp313-manylinux_2_27_x86_64 cp313-cp313-manylinux_2_26_x86_64 cp313-cp313-manylinux_2_25_x86_64 cp313-cp313-manylinux_2_24_x86_64
💡 核心机制解析Compatible tags 列表决定了 pip 的选择优先级:越靠前的标签越贴合本机环境,越靠后的标签越通用。当 pip 面对同一个包的多个 Wheel 文件时,会根据 PEP 425 规则,选择列表中 Index 最小(出现最早)的版本进行安装,所以我们优先选择platform:manylinux_2_28_x86_64。
2. 迁移流程图

⚠️ 重要提醒一旦使用 --platform 参数,pip 将严格匹配指定的平台标签,不再自动向下兼容。例如:即使目标服务器支持 manylinux_2_28,pip 也不会自动选择 manylinux2014(manylinux_2_17)的包。你必须手动指定所有可能的兼容标签。
二、常见平台标签速查表
| | |
|---|
| Linux (新) | manylinux_2_28_x86_64 | 本文基准,适用于 Ubuntu 22.04, RHEL 9 |
| Linux (通用) | manylinux_2_17_x86_64 | 适用于 Ubuntu 18.04+, RHEL 7+ |
| Linux (旧称) | manylinux2014_x86_64 | manylinux_2_17 |
| Windows | win_amd64 | |
| Mac Intel | macosx_10_9_x86_64 | |
| Mac Apple Silicon | macosx_11_0_arm64 | |
三、配套参数速查表
使用 --platform 时,pip 会变得非常“挑剔”,请务必搭配以下参数:
| | | |
|---|
--python-version | | --python-version 313 | |
--abi | | --abi cp313 | |
--implementation | | --implementation cp | cp |
--only-binary=:all: | 仅下载 Wheel | --only-binary=:all: | 必加 |
-d / --dest | | -d ./offline | |
-i / --index-url | | -i https://pypi.tuna.tsinghua.edu.cn/simple | |
--no-index | | --no-index | 安装阶段 |
--find-links | | --find-links=./offline | |
四、实战:Windows 导出 Linux 依赖
由于 --platform 的限制性较强,推荐采用以下两种策略以确保下载成功。完成下载后,需在 Linux 服务器执行安装操作。
✅ 方案 1:单命令指定多平台(推荐)
一次性覆盖新旧标签,兼容性最好。
pip download --only-binary :all: \ --platform manylinux_2_28_x86_64 \ --platform manylinux2014_x86_64 \ --python-version 313 \ --implementation cp \ -d ./offline \ -r requirements.txt \ -i https://pypi.tuna.tsinghua.edu.cn/simple
✅ 方案 2:分阶段下载(最稳妥)
当主命令因部分包无新标签而失败时,单独补下老标签包。
Step 1: 主下载(新标签兜底)
pip download --only-binary :all: \ --platform manylinux_2_28_x86_64 \ --python-version 313 \ --implementation cp \ -d ./offline \ -r requirements.txt \ -i https://pypi.tuna.tsinghua.edu.cn/simple
Step 2: 补缺口(老标签补位)针对失败的包(如 pydantic_core),单独指定老标签:
pip download --only-binary :all: \ pydantic_core==2.46.4 \ --platform manylinux2014_x86_64 \ --python-version 313 \ --implementation cp \ -d ./offline \ -i https://pypi.tuna.tsinghua.edu.cn/simple
Step 3: 依赖导入(Linux 服务器执行)将 offline 目录拷贝至 Linux 服务器后,执行以下命令进行离线安装:
pip install --no-index --find-links=./offline -r requirements.txt
💡 提示:linux的python环境可以使用miniconda、anaconda、
python-build-standalone部署。