DeepSeek总结的利用pip download命令下载whl包用于离线安装的方法
要在下载时就直接把whl文件保存下来。使用 pip download 命令就可以做到:
# 将 pandas 及其依赖的所有包下载到当前目录下的 wheelhouse 文件夹
pip download pandas -d ./wheelhouse
这样,所有 .whl 文件都会直接、清晰地保存在你指定的 wheelhouse 文件夹里,无需再手动查找。
你下载到 ./wheelhouse 文件夹里的 .whl 文件,可以用一条命令一次性全部安装。Pip 支持从本地目录安装,并且会自动处理依赖关系。
✅ 最佳命令(推荐)
进入 wheelhouse 文件夹所在的目录,执行:
pip install --no-index --find-links ./wheelhouse pandas
或者更简洁的写法:
pip install --no-index -f ./wheelhouse pandas
参数说明:
--no-index:关键参数。告诉 pip 不要从 PyPI(Python 包索引)在线查找,只使用本地源。这能确保它只安装你已经下载好的.whl文件。--find-links或-f:指定本地文件夹路径,让 pip 去这个目录里找.whl文件。pandas:你要安装的主包名。Pip 会读取它的依赖信息,然后去./wheelhouse里找对应的依赖包并安装。
pip download 默认会下载所有依赖,除非你加了 --no-deps。所以如果你之前正常执行了这条命令,./wheelhouse 里应该已经包含了 pandas 需要的所有依赖包。
检查一下你的 ./wheelhouse 文件夹里是不是有很多 .whl 文件(比如 numpy-xxx.whl、six-xxx.whl 等)? 如果只有 pandas 一个文件,那就是下载时漏了依赖。可以重新执行一次 pip download pandas -d ./wheelhouse,它会自动补全缺失的依赖。
🧪 通用安装方式(安装目录里所有包)
如果你想安装 ./wheelhouse 里的所有包(不管主包是谁),可以用这个命令:
pip install --no-index --find-links ./wheelhouse $(ls ./wheelhouse/*.whl)
或者使用通配符(部分 shell 支持):
pip install --no-index --find-links ./wheelhouse ./wheelhouse/*.whl
但这种方式可能会遇到包安装顺序问题(比如先装 pandas 再装 numpy 就会报错)。推荐还是用第一种方法:指定主包名让 pip 自己解析依赖顺序,这样最可靠。
📝 总结
| 场景 | 命令 |
|---|---|
| 安装已下载的 pandas 及其依赖 | pip install --no-index -f ./wheelhouse pandas |
| 安装目录里所有 whl 文件(不推荐) | pip install ./wheelhouse/*.whl(可能有顺序问题) |
| 完全离线安装(无网络环境) | 同上,加上 --no-index 确保不联网 |
最稳妥的做法就是:pip install --no-index -f ./wheelhouse pandas,这条命令足够应对绝大多数情况。
如果要同时下载多个包及其所有依赖,直接在 pip download 后面列出所有包名即可:
📦 下载命令
pip download pandas matplotlib polars -d ./wheelhouse
这条命令会:
- 下载
pandas、matplotlib、polars这三个包 - 自动下载它们各自需要的所有依赖包(如
numpy、pyparsing、contourpy等) - 去重处理:同一个依赖包只会下载一次
- 全部保存到
./wheelhouse文件夹
🔧 其他实用写法
1. 从 requirements.txt 文件读取
如果你有很多包,可以先用文件管理:
# 创建 requirements.txt,每行一个包名
echo "pandas" > requirements.txt
echo "matplotlib" >> requirements.txt
echo "polars" >> requirements.txt
# 批量下载
pip download -r requirements.txt -d ./wheelhouse
2. 指定版本
pip download pandas==2.0.3 matplotlib==3.7.0 polars==0.19.0 -d ./wheelhouse
3. 只下载特定平台的包(跨平台场景)
# 下载 Linux 版本
pip download pandas matplotlib polars -d ./wheelhouse --platform manylinux2014_x86_64 --python-version 3.11
# 下载 Windows 版本
pip download pandas matplotlib polars -d ./wheelhouse --platform win_amd64 --python-version 3.11
4. 排除某些依赖(如果有特殊需求)
# 不下载依赖(通常不推荐,除非你有特殊原因)
pip download pandas matplotlib polars -d ./wheelhouse --no-deps
# 只下载指定包的依赖,不下载包本身
pip download pandas matplotlib polars -d ./wheelhouse --no-deps --only-binary :all:
✅ 安装这些包
下载完成后,一次性安装:
pip install --no-index -f ./wheelhouse pandas matplotlib polars
或者更简单的方式(让 pip 自动识别):
pip install --no-index --find-links ./wheelhouse pandas matplotlib polars
Pip 会智能地:
- 从
./wheelhouse里找到所有需要的.whl文件 - 自动处理安装顺序(例如先装
numpy再装pandas) - 不会尝试连接网络
📝 验证下载是否完整
下载完成后,可以查看文件列表确认:
# Linux/macOS
ls -lh ./wheelhouse/
# Windows
dir ./wheelhouse/
你应该会看到类似这样的输出:
numpy-1.24.3-cp39-cp39-win_amd64.whl
pandas-2.0.3-cp39-cp39-win_amd64.whl
matplotlib-3.7.1-cp39-cp39-win_amd64.whl
polars-0.19.0-cp39-cp39-win_amd64.whl
pyparsing-3.0.9-py3-none-any.whl
python-dateutil-2.8.2-py2.py3-none-any.whl
...
💡 小提示
- 磁盘空间:多个包的依赖可能会重复,不用担心,pip 会自动去重
- 网络问题:如果下载中断,重新运行命令,pip 会跳过已下载的完整文件
- 离线迁移:下载好的
wheelhouse文件夹可以整个复制到离线机器上使用
如果你需要管理大型项目(几十上百个包),建议使用 requirements.txt 的方式,更加清晰易维护。
要下载适用于 Python 3.8 版本的包,需要在 pip download 命令中指定 --python-version 参数:
📦 基本命令
pip download pandas matplotlib polars -d ./wheelhouse --python-version 3.8
🔧 完整示例(跨平台场景)
如果需要在特定平台上下载,可以组合使用多个参数:
1. 下载 Windows 版本(Python 3.8)
pip download pandas matplotlib polars -d ./wheelhouse \
--python-version 3.8 \
--platform win_amd64 \
--only-binary :all:
2. 下载 Linux 版本(Python 3.8)
pip download pandas matplotlib polars -d ./wheelhouse \
--python-version 3.8 \
--platform manylinux2014_x86_64 \
--only-binary :all:
3. 下载 macOS 版本(Python 3.8)
pip download pandas matplotlib polars -d ./wheelhouse \
--python-version 3.8 \
--platform macosx_10_9_x86_64 \
--only-binary :all:
📝 参数说明
| 参数 | 作用 | 示例值 |
|---|---|---|
--python-version |
指定 Python 版本 | 3.8、3.9、3.10 |
--platform |
指定操作系统平台 | win_amd64、manylinux2014_x86_64、macosx_10_9_x86_64 |
--only-binary :all: |
只下载预编译的 .whl 文件(不下载源码包) | 推荐加上,避免下载 tar.gz 源码包 |
--implementation |
指定 Python 实现(可选) | cp(CPython,默认)、pp(PyPy) |
🎯 实际应用场景
场景1:在当前环境下载 Python 3.8 版本(最常见)
如果你当前使用的就是 Python 3.8,直接下载即可,pip 会自动匹配:
# 确认当前 Python 版本
python --version # 应该显示 3.8.x
# 直接下载(自动适配)
pip download pandas matplotlib polars -d ./wheelhouse
场景2:在 Python 3.11 环境下载 Python 3.8 版本
# 明确指定目标版本为 3.8
pip download pandas matplotlib polars -d ./wheelhouse \
--python-version 3.8 \
--platform win_amd64 \
--only-binary :all:
场景3:下载多个 Python 版本的包(用于分发)
# 下载 Python 3.8 版本
pip download pandas -d ./wheelhouse/py38 --python-version 3.8 --platform win_amd64 --only-binary :all:
# 下载 Python 3.9 版本
pip download pandas -d ./wheelhouse/py39 --python-version 3.9 --platform win_amd64 --only-binary :all:
# 下载 Python 3.10 版本
pip download pandas -d ./wheelhouse/py310 --python-version 3.10 --platform win_amd64 --only-binary :all:
⚠️ 常见问题
问题1:某些包没有对应 Python 3.8 的预编译版本
# 错误示例:polars 可能不支持 Python 3.8
# 解决方法:查看包的兼容性
pip index versions polars # 查看 polars 支持的 Python 版本
问题2:下载后安装时版本不匹配
# 安装时也要确保使用 Python 3.8
python3.8 -m pip install --no-index -f ./wheelhouse pandas
问题3:需要下载纯 Python 包(无二进制依赖)
# 纯 Python 包可以不指定 platform,只指定 Python 版本即可
pip download requests -d ./wheelhouse --python-version 3.8
💡 最佳实践
推荐命令模板(下载特定平台的 Python 3.8 版本):
pip download pandas matplotlib polars -d ./wheelhouse \
--python-version 3.8 \
--platform $(python -c "import platform; print(platform.system().lower() == 'windows' and 'win_amd64' or 'manylinux2014_x86_64')") \
--only-binary :all:
或者更简单的方式:直接在 Python 3.8 环境中执行 pip download,这样最不容易出错。
📋 验证下载的包是否匹配
下载完成后,查看文件名确认版本:
ls ./wheelhouse/ | grep -E "cp38|py3"
应该看到文件名中包含 cp38 或 py3,例如:
pandas-2.0.3-cp38-cp38-win_amd64.whl✅(Python 3.8)numpy-1.24.3-cp39-cp39-win_amd64.whl❌(这是 Python 3.9 的)
如果发现版本不对,说明参数设置有问题,需要重新下载。
更多推荐



所有评论(0)