rpmbuild如何打包python程序?,python如何制作rpm包?

使用 rpmbuild 打包 Python 项目指南

在 RHEL、CentOS、Fedora 等基于 RPM 的 Linux 发行版中,将 Python 项目打包为 RPM 格式是进行系统级分发和管理的标准方式,随着 Python 生态的发展,现代的打包方式推荐使用 pyproject-rpm-macros,它能够更好地兼容 PEP 517/518 标准。

准备工作

在开始打包之前,你需要安装必要的构建工具和环境:

[Kivy 打包环境配置]-把python打包成安卓应用就是如此的简单。 kivy打包opencv
加载中
[Kivy 打包环境配置]-把python打包成安卓应用就是如此的简单。 kivy打包opencv
  • 安装基础构建工具:
    sudo dnf install rpm-build rpmdevtools python3-rpm-generators python3-pip
  • 初始化 RPM 构建目录结构:
    rpmdev-setuptree

    执行后,会在用户主目录下生成 rpmbuild 目录,包含 SPECS, SOURCES, BUILD, RPMS, SRPMS 等子目录。

核心概念:.spec 文件

.spec 文件是 rpmbuild 的核心,它定义了软件包的元数据、依赖关系以及构建和安装步骤,对于 Python 项目,现代 .spec 文件应利用宏来简化流程。

rpmbuild如何打包python程序?,python如何制作rpm包?

构建步骤

第一步:准备源代码

将你的 Python 项目代码(包含 pyproject.tomlsetup.py)打包成 .tar.gz 文件,并放置到 ~/rpmbuild/SOURCES/ 目录下。

第二步:编写 .spec 文件

~/rpmbuild/SPECS/ 目录下创建一个 .spec 文件(python-myapp.spec)。

以下是一个使用现代 Python 宏的模板:

Name:           python-myapp
Version:        1.0.0
Release:        1%{?dist}
Summary:        示例 Python 项目
License:        MIT
URL:            https://example.com/myapp
Source0:        %{name}-%{version}.tar.gz
BuildRequires:  python3-devel
BuildRequires:  python3-pip
BuildRequires:  python3-setuptools
BuildRequires:  python3-wheel
# 自动生成构建依赖
BuildRequires:  pyproject-rpm-macros
%description
这是一个使用 rpmbuild 打包的 Python 示例项目。
%prep
%autosetup -n %{name}-%{version}
%build
# 构建 wheel
%pyproject_wheel
%install
# 安装 wheel
%pyproject_install
%files
%license LICENSE
%doc README.md
%{python3_sitelib}/myapp/
%{_bindir}/myapp-cli
%changelog
 Mon Oct 23 2026 Your Name <you@example.com> - 1.0.0-1
- Initial package

rpmbuild如何打包python程序?,python如何制作rpm包?

关键宏说明

  • %pyproject_wheel: 自动调用 pip wheel 或构建后端来生成 .whl 文件。
  • %pyproject_install: 自动将生成的 .whl 文件安装到构建根目录中,并处理依赖关系。
  • %{python3_sitelib}: 这是一个预定义的宏,指向 Python 3 的第三方库安装路径(通常是 /usr/lib/python3.x/site-packages)。

执行构建

SPECS 目录下运行以下命令开始构建:

rpmbuild -ba python-myapp.spec
  • -ba: 表示构建二进制包(Binary)和源代码包(Source)。
  • 构建完成后,生成的 .rpm 文件位于 ~/rpmbuild/RPMS/ 目录下,生成的源代码包位于 ~/rpmbuild/SRPMS/ 目录下。

注意事项与最佳实践

rpmbuild如何打包python程序?,python如何制作rpm包?

  • 依赖管理: 尽量使用 BuildRequires 显式声明构建依赖,对于运行时的 Python 依赖,pyproject-rpm-macros 通常会自动处理,但建议在安装后进行测试。
  • 命名规范: RPM 包名应遵循 python3-<项目名> 的命名规范。
  • 避免打包虚拟环境: 不要将 venvvirtualenv 打包进 RPM,RPM 应该安装到系统的 Python 路径中,或者使用 python3-virtualenv 宏进行隔离安装。
  • 测试: 在构建完成后,务必在干净的容器或虚拟机中使用 dnf install ./path/to/package.rpm 进行安装测试,确保所有依赖项都能正确解析。
  • 安全性: 确保在 %install 阶段正确处理文件权限,避免将敏感文件打包进去。

通过使用现代的 pyproject-rpm-macros,你可以极大地减少手动编写构建脚本的工作量,并确保打包过程符合当前的 Python 打包标准。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/488132.html

(0)
Python如何实现RPC,Python RPC框架有哪些?
上一篇 2026年7月12日 18:22
Linux怎么彻底移除MySQL,Linux卸载MySQL后如何清理残留?
下一篇 2026年7月12日 18:22

相关推荐

  • 个人分布式存储靠谱吗?个人分布式存储怎么赚钱

    个人分布式存储并非单纯的技术概念,而是利用闲置算力构建去中心化网络,以低于中心化云厂商30%-50%的成本实现数据高可用备份的解决方案,什么是个人分布式存储及其核心逻辑传统云计算像住酒店,数据存在别人的服务器上,你随时可能面临涨价或封号风险,个人分布式存储则像合租公寓,你不仅提供存储空间,也使用他人的空间,通过……

    2026年6月13日
    2900
  • 哪些服务器CPU能用普通主板,你知道吗?

    如果您想用普通主板搭建服务器,可选的服务器CPU主要有Intel Xeon E系列(E-2100/E-2200/E-2300)以及部分旧款Xeon E3系列,它们采用与桌面酷睿相同的封装,可安装在特定芯片组的普通主板上(如Z390、B460等),但需注意BIOS与供电兼容性,AMD平台则没有直接兼容普通主板的服……

    2026年8月13日
    600
  • 服务器CPU 4G以上有哪些推荐,哪个性价比高?

    服务器CPU 4G以上主要指4核及以上或主频4GHz及以上的处理器,典型代表包括Intel Xeon E-2300系列(最高8核、4.6GHz)、AMD EPYC 7002系列(最高64核、3.4GHz)以及Intel Xeon W-3175X(28核、4.3GHz),实际选择需根据业务负载和内存频率匹配,服务……

    2026年7月28日
    1300
  • 规则引擎如何接收数据?规则引擎接收数据格式

    规则引擎接受数据的核心在于通过标准化的接口协议与实时校验机制,将异构业务数据转化为引擎可识别的结构化指令,从而实现自动化决策流的高效触发,在现代企业架构中,业务逻辑与代码解耦已成为常态,而规则引擎正是这一架构中的“大脑”,它不直接处理原始的业务请求,而是接收经过预处理的数据包,这个过程看似简单,实则涉及复杂的传……

    2026年7月4日
    1600
  • 服务器怎么上传程序文件,服务器上传文件教程

    服务器上传程序文件的核心在于建立安全、高效且可追溯的传输通道,确保文件从本地环境准确无误地部署至服务器指定目录,并具备相应的运行权限,这一过程并非简单的文件搬运,而是涉及传输协议选择、环境配置、权限管理及安全验证的系统化工程,成功的文件上传部署,直接决定了后续程序能否稳定运行,传输协议的选择与连接建立实现文件上……

    2026年3月10日
    14300
  • 高精版文字识别比较好?高精OCR识别软件哪个准确率高

    在数字化浪潮中,高精版文字识别比较好,其核心在于凭借深度学习架构与多模态技术,实现对复杂场景、手写体及生僻字近乎零差错的精准提取与结构化输出,为何高精版文字识别比较好:技术底座与核心跃升突破传统OCR的识别瓶颈传统光学字符识别(OCR)在面对模糊、倾斜、光照不均等复杂场景时往往束手无策,高精版文字识别比较好,根……

    2026年4月28日
    5500
  • 服务器提高本地计算速度慢怎么办,如何解决服务器运行缓慢

    服务器提高本地计算速度慢的根本原因,往往不在于服务器本身的硬件配置不足,而在于网络传输延迟过高、数据I/O瓶颈、架构设计不合理以及本地端资源调度失效,单纯升级服务器硬件无法直接解决本地操作卡顿问题,必须构建“端-管-云”协同的高效计算闭环,通过优化数据传输协议、调整计算下沉策略以及重构I/O模型,才能实质性地提……

    2026年3月9日
    13300
  • 免费服务器本地快照是什么 | 数据备份与恢复解决方案

    服务器本地快照是什么服务器本地快照是一种在服务器存储系统内部创建的、特定时间点的数据状态副本,它并非完整的数据拷贝,而是通过记录数据块在某个精确时刻的变化状态来实现快速恢复点,其核心技术依赖于存储硬件(如SAN、NAS)或操作系统/虚拟化平台的文件系统或卷管理功能,核心原理与技术实现指针映射与元数据记录:创建快……

    2026年2月15日
    11930
  • 服务器密码修改后怎么登录?服务器密码修改后无法登录怎么办

    服务器密码修改后,系统稳定性与安全性将面临短期波动期,必须在72小时内完成配置同步、权限校验与日志审计三重验证,才能确认新密码真正生效且无遗留风险,若跳过任一环节,将导致服务中断、权限错乱或安全漏洞暴露,本文基于2023年全球服务器运维白皮书数据及500+企业案例,提供可落地的标准化操作流程,密码修改后的三大高……

    2026年4月15日
    7100
  • 个人主机如何加入云电脑?云电脑怎么连接个人电脑

    个人主机无法直接“变身”为云电脑,但可以通过安装云桌面客户端软件,将本地主机作为终端接入企业或个人的云端服务器,从而实现远程办公和数据同步,很多用户混淆了“本地主机”和“云电脑”的概念,云电脑的核心在于算力在云端,本地只是显示器和输入设备,如果你想让家里的电脑享受云端的强大性能,或者实现多设备无缝切换,关键在于……

    2026年6月16日
    3700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注