pip download是离线安装核心前提,必须在联网机上一次性下全所有包及依赖;--no-index和--find-links缺一不可,否则pip拒绝读本地文件;需严格匹配python版本、系统架构与平台标签。

pip download 必须在联网机器上提前执行
离线安装的核心前提是:所有包及其依赖必须在有网机器上一次性下全,不能指望在目标机器上“边装边找”。pip download 是唯一能自动拉取完整依赖树的命令,它会把 requests、urllib3、certifi 等所有间接依赖都下载成 .whl 或 .tar.gz 文件。
常见错误是只下载主包,比如 pip download requests 却没加 -d 目录参数,结果文件散落在当前路径,还可能混入缓存;或者漏掉 --no-binary :all: 导致某些包没下载源码,到了离线环境因缺少编译工具而失败。
- 推荐命令:
pip download -r requirements.txt -d ./packages --no-deps(先不拉依赖) +pip download -r requirements.txt -d ./packages(再补全,避免重复) - 务必确认联网机器的 Python 版本、系统架构(
platform.architecture())、位数(32/64)和操作系统(Windows/Linux),否则下载的.whl在目标机上会报is not a supported wheel on this platform - 如果目标机是老旧 Windows Server 且无 VS Build Tools,优先用
--no-binary :all:下.tar.gz,但得确保离线机装了setuptools和wheel
离线安装时 --no-index 和 --find-links 缺一不可
pip install 默认会联网查 PyPI,即使本地有文件也会报错或跳过。必须显式禁用索引并指定本地路径,否则你会看到 Could not find a version that satisfies the requirement xxx —— 这不是缺包,是 pip 拒绝看本地文件。
正确写法只有这一种组合:pip install --no-index --find-links=./packages -r requirements.txt。注意:--find-links 后面不能带空格,路径必须是相对或绝对路径,且结尾不能加斜杠(./packages/ 是错的,./packages 才对)。
从QuickView趋势笔记生成韩语AI播客包,含双人主持脚本(Callie×Nick)、Gemini多说话人TTS音频、字幕时间轴与渲染修正、缩略图+MP4包装及YouTube标题/描述输出。支持完整版(15~20分钟)和压缩版(5~7分钟)。
- 如果只装单个包,如
numpy,命令是:pip install --no-index --find-links=./packages numpy - 若提示
xxx has no versions,大概率是./packages下根本没有该包的文件,或者文件名拼写错误(比如numpy-1.24.4-cp39-none-win_amd64.whl写成numpy-1.24.4-cp39-cp39-win_amd64.whl) - 不要用
pip install xxx.whl直接装单个文件——它不会自动装依赖,容易漏掉pyyaml、packaging这类底层依赖
requirements.txt 的写法直接影响离线成功率
线上 pip freeze 输出的 requirements.txt 常含 -e git+https://... 或 file:// 这类离线无法解析的地址,也常带 pkg-resources==0.0.0 这种虚拟环境残留项,直接用于离线会失败。
真正可用的 requirements.txt 应只含纯包名+版本约束,且版本要锁定(用 ==,不用 ~= 或 >=),否则 pip download 可能拉到不兼容的版本。
- 生成建议:
pipreqs . --force --encoding=utf8(从项目代码分析真实依赖),比pip freeze更干净 - 手动检查:删掉所有以
-e、git+、file://、pkg-resources开头的行 - 特别注意:像
torch这类包,PyPI 上只有 CPU 版,GPU 版必须去官网下.whl并手动放进./packages,否则pip download torch会拉错
离线机必须预装 pip 和 setuptools,且版本不能太低
很多离线环境只装了 Python 解释器,没 pip,更没 setuptools。此时 pip install --no-index ... 会直接报 ModuleNotFoundError: No module named 'setuptools',连错误提示都打不出来。
最低要求是:Python ≥ 3.6 + pip ≥ 21.0 + setuptools ≥ 45.0。老版本 pip(如 9.x)不支持 --find-links 与 -r 联用,会静默忽略依赖。
- 验证方式:
python -c "import pip; print(pip.__version__)"和python -c "import setuptools; print(setuptools.__version__)" - 升级方法(需提前下载好
get-pip.py和setuptools-xx.tar.gz):python get-pip.py --no-index --find-links=./packages - 如果离线机完全没 pip,先用
python -m ensurepip尝试启用内置 pip(仅限 Python 3.4+ 官方安装包)
.whl 的包,或依赖系统级库(libxml2、openssl)的包。这类情况必须提前在同类系统上验证,不能等到离线机上才试。










