如何在无网离线环境下为Python项目批量安装whl包

夏杰大大_9107

夏杰大大_9107

2026-09-15

856人浏览

原创

最可靠方式是pip install --no-index --find-links ./wheels -r requirements.txt:它自动解析依赖顺序、跳过网络、避免手动安装错乱;需严格匹配目标环境平台标签(如cp39-manylinux2014_x86_64),通过pip._vendor.packaging.tags.sys_tags()获取准确标签,并用pip download --platform --python-version --abi在联网机精准下载全量wheel包。

如何在无网离线环境下为python项目批量安装whl包

离线批量安装 Python .whl 包,最可靠的方式不是逐个 pip install xxx.whl,而是用 pip install --no-index --find-links 配合 requirements.txt ——它能自动解析依赖顺序、跳过网络检查、避免因手动安装顺序错乱导致的隐式联网请求。

确认目标环境平台标签,否则90%的安装会失败

离线安装失败,绝大多数是因为 .whl 文件名里的平台标签(如 cp39-manylinux2014_x86_64)和目标机器不一致。不能只看“Python 3.9”,必须严格匹配:

  • 运行 python -c "import pip._vendor.packaging.tags; print(list(pip._vendor.packaging.tags.sys_tags())[0])" —— 这行输出就是你该用的完整标签(例如 cp39-cp39-manylinux2014_x86_64
  • 运行 uname -mcat /etc/os-release | grep PRETTY_NAME 确认系统架构与基础发行版(manylinux2014 不兼容 CentOS 6 或旧版 glibc)
  • 如果目标机是 Windows,注意 win_amd64win32 不能混用;ARM64 设备需明确找 win_arm64 标签

在联网机上下载带正确标签的 wheel 包集合

别用 pip download requests 直接拉包——它默认按当前机器环境下载,极易拉回不兼容的版本。必须显式指定目标平台参数:

Shadows Python Sensei
Shadows Python Sensei

Python 最佳实践助手——代码规范、设计模式、性能优化、测试与类型注解。适用于编写或审查 Python 代码。

下载
  • 先下载主包(不带依赖):pip download --no-deps --platform manylinux2014_x86_64 --python-version 39 --abi cp39 --only-binary=:all: requests==2.31.0 -d ./wheels
  • 再查依赖:pip show requests | grep Requires,对每个依赖项重复上一步,确保全部使用相同 --platform--python-version
  • 最后执行:ls ./wheels | grep -E "(cp39|manylinux)" | head -5 快速扫一眼,确认没混入 cp310win32macosx

在离线机上用 requirements.txt 批量安装

requirements.txt 和整个 wheels/ 目录一起拷过去,执行一条命令即可完成全量安装:

  • 确保 requirements.txt 中只写包名和版本,不带 URL 或 VCS 地址(例如写 requests==2.31.0,而非 git+https://...
  • 进入 wheels/ 所在目录,运行:pip install --no-index --find-links ./wheels -r requirements.txt
  • --force-reinstall --no-deps 可用于重装单个包调试;但批量安装时不要加,否则会破坏依赖推导
  • 安装后务必验证:python -c "import requests; print(requests.__version__)" + 检查 site-packages/ 下对应目录是否存在

最容易被忽略的是:某些包(如 torchtensorflow)的 .whl 名称里还嵌了 CUDA 版本(如 cu121),而 pip._vendor.packaging.tags.sys_tags() 不会体现这点——必须人工核对 nvcc --versioncat /usr/local/cuda/version.txt,再选对应 wheel。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1551

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

3664

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1569

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

20897

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2587

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2647

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1063

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

576

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2043

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程