离线机器装 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。