离线安装conda包需先在联网机用conda download或清华镜像站下载完整.tar.bz2依赖链,再通过conda install --offline指定绝对路径安装,必须确保版本、平台、ABI哈希一致且权限可读。

conda install 在离线环境里根本跑不起来——它默认要连 https://repo.anaconda.com。真正能落地的方案,是把包提前下载好、传过去、再用本地路径装。
怎么下载 .tar.bz2 离线包
别用 pip download,conda 包不是 wheel;得用 conda download 或镜像站手动抓取:
- 先在有网机器上查目标包依赖:
conda search --info pytorch(注意版本号和平台,比如linux-64) - 去清华镜像站找对应
.tar.bz2文件:https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/,搜pytorch-或numpy- - 一定要下全依赖链:比如装
pytorch,还得顺手把cpuonly、pyyaml、typing_extensions一起下(看conda search --info输出里的depends列表)
怎么用本地 .tar.bz2 装包
conda install 支持直接指定本地文件路径,但必须用完整路径 + .tar.bz2 后缀:
- 把所有
.tar.bz2文件放到离线机同一目录,比如/tmp/conda-offline/ - 运行:
conda install --offline /tmp/conda-offline/pytorch-2.3.0-py311h7e861d5_0.tar.bz2 - 不能只写包名,也不能用通配符;多个包要一个个列,或写成空格分隔的列表
- 如果提示 missing dependency,说明漏下了某个
.tar.bz2,回 upstream 补全
为什么不用 conda install --no-deps + 手动装依赖
看起来省事,实际容易翻车:
-
--no-deps会跳过所有依赖检查,但很多包(如pytorch)内部硬编码了对cudatoolkit或nccl的动态链接路径,缺一个就ImportError: libcudart.so.12: cannot open shared object file - 手动装顺序错(比如先装
pytorch再装cudatoolkit),conda 不会自动重链接,得自己ldconfig或改LD_LIBRARY_PATH - 不同版本间 ABI 不兼容:比如
cudatoolkit=12.1.1和pytorch=2.3.0搭配没问题,换成cudatoolkit=12.1.0就可能 segfault
conda install --offline 容易忽略的细节
这个命令看着简单,但几个地方不注意就会卡住:
- 路径必须是绝对路径,相对路径会报
CondaHTTPError: Not a valid archive - 文件权限要是可读的:
chmod 644 *.tar.bz2,否则解包失败 - 目标环境必须已存在且激活,
--offline不会自动创建新环境 - 装完别忘了
conda list核对版本,尤其留意build字段(如py311h7e861d5_0),它决定了底层 ABI 兼容性
.tar.bz2 文件名里的 h7e861d5_0 这种哈希串不是装饰,它编码了编译时的工具链和依赖快照——漏掉一个,后面 import 就崩。

















