建立Python 离线软件仓库(wheelhouse)

建立一个自己的 Python 离线软件仓库(wheelhouse)。以后换电脑,只要把这个目录复制过去,就可以完全离线安装,不需要再次从官方下载。

1. 先找到你现在这个 Torch 到底缓存在哪里

最可靠的方法不是猜路径,而是让 pip 自己告诉你:

python -m pip cache dir

Windows 上通常会得到:

C:\Users\Logic\AppData\Local\pip\Cache

你还可以查看缓存信息:

python -m pip cache info

以及查看 pip 能识别到的 wheel 缓存:

python -m pip cache list

筛选 Torch:

python -m pip cache list | findstr /i torch

不过这里有一个容易误解的地方:

Using cached torch-2.5.1+cu118-cp311-cp311-win_amd64.whl

并不一定意味着这个 .whl 就以原文件名直接躺在:

C:\Users\Logic\AppData\Local\pip\Cache

pip 的 HTTP 缓存可能使用哈希文件名和子目录保存。

所以如果你想把这个 2.7GB Torch 文件真正找出来,PowerShell 可以直接按文件大小搜索:

$cache = python -m pip cache dir

Get-ChildItem $cache -Recurse -File |
    Where-Object { $_.Length -gt 2GB } |
    Select-Object FullName, Length

如果想把所有比较大的文件列出来:

$cache = python -m pip cache dir

Get-ChildItem $cache -Recurse -File |
    Sort-Object Length -Descending |
    Select-Object -First 30 FullName, Length

这样你基本就能看到这个 2.7GB 文件到底在哪。


2. 但是:不要直接复制 pip Cache

这是最重要的一点。

你完全可以把:

C:\Users\Logic\AppData\Local\pip\Cache

整个复制到另一台机器,但我不推荐把它作为你的长期方案。

因为 pip Cache 是 pip 自己内部使用的缓存结构,里面除了 wheel,还有 HTTP 缓存、元数据等。它适合:

“我曾经下载过,再安装一次时尽量复用。”

而你真正想要的是:

“这是我的 Python 3.11 AI 软件仓库,以后任何一台电脑都可以从这里安装。”

这时候应该使用:

wheelhouse

也就是:

D:\wheelhouse\ai311\

里面直接存放:

numpy-xxx.whl
scipy-xxx.whl
pandas-xxx.whl
...
torch-2.5.1+cu118-xxx.whl

以后:

电脑 A ─┐
电脑 B ─┼──> D:\wheelhouse\ai311
电脑 C ─┘

非常干净。


3. 把你现在这套 AI 环境一次性下载下来

按照我们前面确定的版本:

Python        3.11
NumPy         2.2.6
SciPy         1.15.3
Pandas        2.2.3
Matplotlib    3.10.1
Scikit-learn  1.6.1

PyTorch       2.5.1+cu118
torchvision   0.20.1+cu118
torchaudio    2.5.1+cu118

先建立仓库:

mkdir D:\wheelhouse\ai311

然后下载普通科学计算包:

python -m pip download `
    --only-binary=:all: `
    -d D:\wheelhouse\ai311 `
    numpy==2.2.6 `
    scipy==1.15.3 `
    pandas==2.2.3 `
    matplotlib==3.10.1 `
    scikit-learn==1.6.1

然后下载 CUDA 11.8 的 PyTorch:

python -m pip download `
    --only-binary=:all: `
    -d D:\wheelhouse\ai311 `
    torch==2.5.1+cu118 `
    torchvision==0.20.1+cu118 `
    torchaudio==2.5.1+cu118 `
    --index-url https://download.pytorch.org/whl/cu118

这里有一个关键好处:

pip download

不会安装软件,只负责下载 wheel 和依赖。

因此你最终会得到一个类似:

D:\wheelhouse\ai311\
│
├── numpy-2.2.6-...
├── scipy-1.15.3-...
├── pandas-2.2.3-...
├── matplotlib-3.10.1-...
├── scikit_learn-1.6.1-...
│
├── torch-2.5.1+cu118-cp311-cp311-win_amd64.whl
├── torchvision-0.20.1+cu118-...
├── torchaudio-2.5.1+cu118-...
│
├── pillow-...
├── sympy-...
├── networkx-...
├── jinja2-...
└── 其他依赖...

注意:依赖也会一起下载,所以这实际上已经变成了一个小型离线 PyPI 仓库。


4. 以后换一台电脑怎么安装?

假设新电脑也是:

Windows x64
Python 3.11

把整个:

D:\wheelhouse\ai311

复制过去,例如:

E:\wheelhouse\ai311

然后:

python -m pip install `
    --no-index `
    --find-links=E:\wheelhouse\ai311 `
    numpy==2.2.6 `
    scipy==1.15.3 `
    pandas==2.2.3 `
    matplotlib==3.10.1 `
    scikit-learn==1.6.1 `
    torch==2.5.1+cu118 `
    torchvision==0.20.1+cu118 `
    torchaudio==2.5.1+cu118

这里:

--no-index

意思是:

完全不要访问网上的软件源。

而:

--find-links=E:\wheelhouse\ai311

意思是:

去这个目录寻找 .whl。

于是整个安装过程就变成:

本地 wheelhouse
       ↓
      pip
       ↓
Python 3.11 虚拟环境

完全不需要联网。


5. 更推荐的做法:建立 requirements.txt

你的环境已经比较固定了,我建议把版本写成:

numpy==2.2.6
scipy==1.15.3
pandas==2.2.3
matplotlib==3.10.1
scikit-learn==1.6.1

torch==2.5.1+cu118
torchvision==0.20.1+cu118
torchaudio==2.5.1+cu118

保存为:

ai311.txt

以后下载:

python -m pip download `
    --only-binary=:all: `
    -r ai311.txt `
    -d D:\wheelhouse\ai311

不过这里由于 PyTorch 使用独立的 CUDA 11.8 软件源,我仍然建议把 PyTorch 和普通科学计算包分两次 pip download,这样最不容易发生源解析问题。


6. 甚至可以把整个 wheelhouse 打成一个压缩包

例如:

D:\wheelhouse\ai311

变成:

ai311-wheelhouse.zip

以后:

电脑 A
   ↓
ai311-wheelhouse.zip
   ↓
电脑 B
   ↓
解压
   ↓
pip install --no-index --find-links=...

这实际上比“复制 pip Cache”更像真正的离线 Python 软件包仓库。


7. 再进一步:可以让 pip 永久优先使用你的本地仓库

例如你的本地仓库固定为:

D:\wheelhouse\ai311

那么可以配置:

pip config set global.no-index true
pip config set global.find-links D:\wheelhouse\ai311

以后:

pip install numpy

就会直接从:

D:\wheelhouse\ai311

找。

不过这个配置会让 pip 默认完全不联网,所以我不建议你现在全局打开。更实用的是在需要离线安装的时候显式使用:

--no-index --find-links=...

对你这台机器,我建议最终形成这样的结构

D:\
├── venvs\
│   └── ai311\
│
└── wheelhouse\
    └── ai311\
        ├── numpy
        ├── scipy
        ├── pandas
        ├── matplotlib
        ├── scikit-learn
        ├── torch
        ├── torchvision
        ├── torchaudio
        └── dependencies...

这样你的 Python 环境 和 软件包仓库 是分离的:

wheelhouse
    ↓
创建多少个 venv 都可以重复使用

这比保存某一个 venv 本身更合理。

尤其是你后面还要装 FlagEmbedding、BGE、Transformers、JupyterLab 等 AI 包,我建议进一步给你做成一个完整的 ai311-wheelhouse 离线包仓库,把你目前这套 NumPy/PyTorch/Jupyter/Embedding 环境一起整理进去。

posted @ 2026-09-10 20:57  立体风  阅读(53)  评论(0)    收藏  举报