Skip to content

离线机器装 Python 包,麻烦通常不在单个 .whl,而在它还依赖一串别的包。做法是:有网的机器把依赖树下全,拷过去,再用 --no-index 只从本地装。

有网的机器上准备 ​

看某个包有哪些版本:

bash
pip index versions some-package

连依赖一起下载:

bash
pip download -d /path/to/wheels pytest==8.3.3
pip download -d /path/to/wheels pandas==2.2.2 --only-binary :all:

--only-binary :all: 只拿 wheel,避免到离线环境再现场编译。包声明的 Python 版本、平台标签(manylinux / win_amd64)要和目标机一致,否则拷过去也装不上。

拷到目标机后安装 ​

bash
conda activate myenv
pip install /path/to/wheels/some_package-....whl --no-index --find-links=/path/to/wheels

--no-index 禁止去网上的索引翻。没加的话,即使你给的是本地文件,pip 仍可能去连配置里的镜像,报网络错误。

--find-links 指向那一目录,依赖就能从同一批文件里解析。只装单个 whl、依赖不在旁边时,错误会类似「No matching distribution found for xxx」。把缺的包在有网机器再 pip download 一次补进来。

也可以先试:

bash
pip install /path/to/wheels/*.whl --no-index

目录很杂时不如 --find-links 精确。

还在联网? ​

检查 pip.conf / pip.ini 里有没有 index-url。离线安装以命令行为准,但配置残留会干扰判断。确认目标 Python 版本后再下载,cp38 的轮子装不进 3.11。

测试开发工程师 · 专注自动化与系统架构 | 邮箱: hansblog@atumsoul.win