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://idctop.com/article/488132.html

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

相关推荐

  • python asynchat怎么用?python异步网络编程教程

    Python的asynchat模块是早期异步网络编程的基石,虽已被asyncio取代,但在维护遗留系统或理解底层异步IO原理时仍具重要价值,在2026年的今天,提到Python异步编程,绝大多数开发者脑海中浮现的必然是asyncio及其配套的await/async语法,在深入理解现代异步框架之前,回溯历史往往能……

    2026年7月9日
    19700
  • 服务器如何安装与维护?云服务器安装维护常见问题及解决方案

    高效、稳定、可扩展——云服务器部署与运维的核心实践路径在当前数字化转型浪潮中,服务器安装与维护相关云计算内容已成为企业IT基础设施建设的关键环节,相比传统物理服务器,云服务器具备弹性伸缩、按需付费、自动化运维等显著优势,但若部署不当或运维疏漏,反而会引发性能瓶颈、安全风险与成本失控,本文基于一线实战经验,系统梳……

    服务器运维 2026年4月16日
    4600
  • 服务器密码管理软件怎么选?企业级服务器密码管理软件推荐

    的核心在于:通过标准化、自动化、可审计的密钥与凭证生命周期管理,显著降低运维风险、提升安全合规水平,并保障业务连续性,在云原生与混合架构日益普及的当下,企业若缺乏专业密码管理机制,将面临高达67%的凭证泄露风险(IBM《2023年数据泄露成本报告》),本文直击关键实践,提供可落地的解决方案,为何需要专业服务器密……

    2026年4月14日
    5500
  • 服务器搭建单窗口单ip怎么做?单窗口单ip怎么配置?

    在单一IP地址上构建服务器环境是许多初创企业和个人开发者面临的首要技术挑战,核心结论非常明确:通过精细化的系统配置、严格的端口管理以及容器化隔离技术,完全可以在单IP环境下构建出高可用、高安全且性能卓越的服务架构, 这种架构不仅能够大幅降低基础设施成本,还能通过减少攻击面来提升整体安全性,核心架构设计原则在资源……

    2026年3月1日
    11600
  • 服务器必须挂载磁盘吗?服务器不挂载数据盘会怎样

    服务器并非在所有场景下都必须挂载磁盘,但为了保障数据安全、提升系统性能以及实现业务扩展,挂载独立磁盘是生产环境中不可或缺的关键操作,系统盘仅能满足基础运行需求,数据盘才是业务稳定与安全的基石,系统盘的局限性与数据风险默认情况下,服务器启动时依赖自带的系统盘运行,但这并不意味着系统盘足以支撑完整的业务生态,容量瓶……

    2026年3月25日
    10100
  • 服务器怎么改操作系统?服务器更换系统详细步骤教程

    服务器更改操作系统是一项高风险、高技术门槛的操作,核心结论在于:成功更换系统的关键不在于安装过程本身,而在于数据的完整备份与硬件驱动的兼容性验证,执行此操作必须遵循“备份-验证-安装-调试”的标准化流程,任何环节的疏忽都可能导致业务中断或数据永久丢失,对于企业级应用,全量备份是不可逾越的红线, 前期准备与风险评……

    2026年3月16日
    12400
  • 高级数据链路控制规程常见问题怎么解决?HDLC协议故障排查方法

    高级数据链路控制规程常见问题的核心解决路径,在于精准识别帧同步异常、链路建立超时与拥塞丢帧等底层逻辑,并依托2026年最新国标规范与自动化诊断工具实施协议参数调优及链路冗余切换,HDLC底层运行机制与常见故障图谱协议核心逻辑复盘高级数据链路控制规程(HDLC)作为面向比特的同步通信协议,其稳定性高度依赖于帧结构……

    2026年4月26日
    5000
  • 高级威胁检测购买怎么选?企业高级威胁检测系统哪家好

    面对日益隐蔽的复合型网络攻击,2026年企业进行高级威胁检测购买时,必须摒弃传统特征匹配思维,优先选择融合AI行为分析、威胁情报联动与自动化响应(XDR)架构的方案,方能实现从被动防御到主动猎杀的质变,2026年高级威胁检测的核心演进与采购逻辑威胁态势的代际跃迁根据国家计算机网络应急技术处理协调中心2026年年……

    2026年4月26日
    5300
  • 服务器屏蔽dht怎么解决?服务器屏蔽dht有什么影响

    服务器屏蔽DHT是保障核心业务稳定性、防止带宽资源被恶意占用以及规避版权法律风险的关键技术手段,在P2P技术广泛应用的当下,DHT(分布式哈希表)网络虽然提供了去中心化的节点发现能力,但对于企业级服务器而言,它往往意味着不可控的流量洪峰、潜在的DDoS攻击向量以及合规性隐患,通过在系统内核与防火墙层面实施严格的……

    2026年4月5日
    9400
  • 规则引擎数据怎么存?数据库选型与存储方案

    规则引擎的数据存储核心在于将“业务逻辑”与“执行代码”彻底解耦,通常采用JSON或XML等结构化格式将规则集持久化至关系型数据库或NoSQL文档数据库中,以实现动态加载与热更新,在数字化转型的深水区,业务人员最头疼的不是代码写不出来,而是业务规则一变,开发就要重新发版,这种“改个折扣率就要停机维护”的痛点,直接……

    2026年7月6日
    13900

发表回复

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