使用pip wheel与HTTP服务器构建离线Python包库的完整指南

 更新时间:2025年10月26日 09:39:19   作者:东方佑  
在无法访问互联网的环境中部署Python项目时,离线包库是必不可少的解决方案,本文将详细介绍如何创建一个完整的离线Python包库,下面小编就和大家简单讲讲吧

在无法访问互联网的环境中部署Python项目时,离线包库是必不可少的解决方案。本文将详细介绍如何创建一个完整的离线Python包库,让你可以在内网环境中轻松安装Python依赖。

核心思路

  • 使用pip wheel下载所有依赖的wheel文件
  • 使用Python内置HTTP服务器共享这些文件
  • 通过--find-links参数实现离线安装

完整步骤

第一步:准备环境

确保你已安装:

  • Python 3.6+
  • pip最新版本
# 更新pip
python -m pip install --upgrade pip

第二步:生成requirements.txt文件

# 如果你已有项目
pip freeze > requirements.txt

# 或者从top-pypi-packages获取示例
curl -O https://hugovk.github.io/top-pypi-packages/top-pypi-packages-30-days.min.json

第三步:下载所有wheel文件

# 创建存储目录
mkdir wheelhouse

# 下载所有依赖的wheel文件
pip wheel --wheel-dir=wheelhouse -r requirements.txt

这个命令会:

  • 解析requirements.txt中的所有依赖
  • 下载每个包的wheel文件
  • 保存到wheelhouse目录中

第四步:启动HTTP服务器

cd wheelhouse
python -m http.server 8080  # 使用8080端口

服务器启动后,可以通过http://<your-ip>:8080访问所有wheel文件。

第五步:离线安装包

在目标机器上执行:

pip install --no-index --find-links=http://<server-ip>:8080/ package_name

或者安装整个requirements.txt:

pip install --no-index --find-links=http://<server-ip>:8080/ -r requirements.txt

实际案例演示

假设我们需要离线安装requests和numpy:

创建requirements.txt:

requests
numpy

下载wheel文件:

pip wheel --wheel-dir=wheelhouse -r requirements.txt

启动服务器:

cd wheelhouse
python -m http.server 8080

在另一台机器上安装:

pip install --no-index --find-links=http://192.168.1.100:8080 requests numpy

高级技巧

跨平台支持

pip wheel --wheel-dir=wheelhouse --platform manylinux2014_x86_64 -r requirements.txt

批量下载

# 下载整个pypi-top-100包
curl -s https://hugovk.github.io/top-pypi-packages/top-pypi-packages-30-days.json \
| jq -r '.rows[].project' | head -100 > requirements.txt

使用Docker容器

# 创建干净的构建环境
docker run -v $(pwd):/app python:3.9-slim \
  pip wheel --wheel-dir=/app/wheelhouse -r /app/requirements.txt

注意事项

平台兼容性:在相同架构和操作系统的机器上生成wheel文件

Python版本:确保生成环境与目标环境的Python版本一致

文件完整性:定期检查wheel文件的完整性

安全考虑:在内网环境中使用,避免将HTTP服务器暴露到公网

替代方案比较

方法优点缺点
pip wheel + HTTP轻量级、无需额外工具需要手动管理依赖
devpi功能完整、支持缓存配置复杂、资源占用大
bandersnatch官方镜像工具需要大量存储空间
Docker镜像完整环境隔离镜像体积较大

结语

通过pip wheel和Python内置HTTP服务器,你可以快速搭建轻量级的离线Python包库。这种方法特别适合:

  • 企业内网环境
  • 安全要求高的生产环境
  • 无互联网访问的嵌入式系统
  • 需要重复部署的CI/CD环境

掌握这项技能将大大提高你在受限环境中的Python开发效率。

到此这篇关于使用pip wheel与HTTP服务器构建离线Python包库的完整指南的文章就介绍到这了,更多相关Python构建离线包库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现aes加密解密多种方法解析

    Python实现aes加密解密多种方法解析

    这篇文章主要介绍了Python实现aes加密解密多种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python3中将字符串转换为字节的三种方法

    Python3中将字符串转换为字节的三种方法

    在Python 3中,字符串(str)和字节(bytes)是两种不同的数据类型,在处理文件、网络传输等场景时,经常需要将字符串转换为字节,Python提供了多种方法来实现这一转换,本文将详细介绍这些方法及其区别,需要的朋友可以参考下
    2025-06-06
  • 22个Python的万用公式分享

    22个Python的万用公式分享

    在大家的日常python程序的编写过程中,都会有自己解决某个问题的解决办法,或者是在程序的调试过程中,用来帮助调试的程序公式。小编通过几十万行代码的总结处理,总结出了22个python万用公式,可以帮助大家解决在日常的python编程中遇到的大多数问题,一起来看看吧
    2022-12-12
  • 深入了解Python装饰器的高级用法

    深入了解Python装饰器的高级用法

    这篇文章主要介绍了Python装饰器的高级用法,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Pycharm设置界面全黑的方法

    Pycharm设置界面全黑的方法

    今天小编就为大家分享一篇Pycharm设置界面全黑的方法,具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python中JSON数据处理的完整指南

    Python中JSON数据处理的完整指南

    本文将把目光投向现实世界最通用的数据语言——JSON,API、配置、数据库,处处都有它的身影,五分钟掌握 Python 内置 json 模块,读写解析一气呵成
    2025-08-08
  • 我的快递一个月没动静于是赶紧上线python快递查询系统

    我的快递一个月没动静于是赶紧上线python快递查询系统

    我的快递在路上走了一个月还没到,于是自己编写快递查询,文中通过实例代码截图的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-09-09
  • Python实现自动清理电脑垃圾文件详解

    Python实现自动清理电脑垃圾文件详解

    经常存在在我们的电脑中的垃圾文件主要是指系统在运行过程中产生的tmp临时文件、日志文件、临时备份文件等。本文将利用Python实现自动清理这些垃圾文件,需要的可以参考一下
    2022-03-03
  • Django 视图层(view)的使用

    Django 视图层(view)的使用

    这篇文章主要介绍了Django 视图层(view)的使用,详细的介绍了什么是视图层以及案例,非常具有实用价值,需要的朋友可以参考下
    2018-11-11
  • Pycharm以root权限运行脚本的方法

    Pycharm以root权限运行脚本的方法

    今天小编就为大家分享一篇Pycharm以root权限运行脚本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01

最新评论