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

相关推荐

  • 服务器如何查看上传下载网速?实时监测服务器网速方法

    服务器查看上行下行网速准确回答:在服务器上精确查看实时上行(发送)与下行(接收)网速,Linux系统推荐使用 iftop、nload 或 bmon 命令;Windows服务器可使用资源监视器或 Get-NetAdapterStatistics PowerShell命令,长期带宽趋势分析工具推荐 vnstat 或……

    2026年2月13日
    17300
  • 个人怎么看大数据?大数据对个人生活有哪些影响

    大数据不是冷冰冰的服务器集群,而是能听懂业务语言、辅助决策的“数字合伙人”,其核心价值在于将海量杂乱信息转化为可执行的商业洞察,很多人对大数据的印象还停留在“存储很多数据”或者“用很贵的软件”上,这种理解其实停留在表面,真正的大数据思维,是学会如何从噪音中筛选信号,把过去发生的事、现在正在发生的事,以及未来可能……

    2026年5月30日
    5200
  • gogslinux怎么安装?gogslinux安装教程

    GOGS Linux安装的核心在于使用官方提供的二进制包或Docker镜像进行快速部署,通过配置Nginx反向代理和PostgreSQL数据库即可实现稳定运行,整个过程无需复杂的源码编译,适合追求高效运维的团队,在2026年的技术环境中,自托管Git服务依然是许多开发团队的首选,相比于商业SaaS平台,自建版本……

    2026年6月25日
    2010
  • 服务器操作系统怎么选?新手如何安装教程?

    构建高可用性IT基础设施的基石在于底层环境的选择与部署,服务器操作系统及安装不仅是技术实施的起点,更是决定后续业务稳定性、安全性和性能表现的关键环节,无论是搭建Web集群、数据库服务,还是企业级应用,选择正确的操作系统并遵循标准化的安装流程,能够规避90%以上的底层环境故障,本文将基于E-E-A-T原则,深度解……

    2026年2月27日
    12400
  • 服务器怎么布置?服务器布置方案详细步骤

    高效、稳定、安全且具备高性价比的服务器布置方案,核心在于构建一套从需求分析、架构设计到运维监控的闭环体系,而非单纯的硬件堆砌,一个成熟的服务器布置方案,必须以业务连续性为基石,以数据安全为红线,以可扩展性为前瞻指引,确保在流量高峰期系统依然能够平稳运行,同时在长期的运营中有效控制成本, 前期规划:精准定位业务需……

    2026年4月4日
    8200
  • 个人网站不能含视频吗,个人网站能放视频吗

    ,这不仅是因为视频文件体积庞大导致加载极慢,更因为百度算法对静态纯文本内容的抓取效率远高于多媒体文件,直接嵌入视频会严重拖累SEO表现,为什么视频是个人网站的SEO毒药在2026年的搜索引擎优化环境中,用户体验的核心指标已经发生了根本性转移,过去那种“视频能增加停留时间”的旧观念,在当前的算法逻辑下显得格格不入……

    服务器运维 2026年5月25日
    5300
  • 服务器直播如何收费?直播服务器价格方案详解

    服务器直播收费标准服务器直播服务的核心收费模式通常围绕资源消耗量(如带宽、流量、计算能力、存储空间)和服务等级(如配置高低、保障级别、附加功能)展开,具体费用因服务商、方案配置、直播规模、流量峰值等因素差异显著,无法给出单一价格,典型的价格范围在 每月数百元至数万元人民币 不等,理解影响费用的关键因素和选择策略……

    2026年2月9日
    13760
  • 服务器怎么与客户端连接,连接失败该怎么办?

    服务器与客户端连接的本质,是客户端通过IP地址和端口找到服务器,经TCP三次握手建立可靠通道,再按HTTP或自定义协议交换数据的过程,整个过程看似简单,实际涉及网络寻址、连接建立、数据封装、状态维持等多个环节,任何一个环节出问题,都会让客户端“找不到门”或“进不了门”,连接前必须搞清的基本概念服务器和客户端分别……

    2026年8月8日
    200
  • 服务器怎么改登录密码?Windows服务器修改密码步骤

    修改服务器登录密码是保障系统安全的核心操作,最直接且通用的方法是通过命令行工具(如Linux的passwd命令或Windows的Ctrl+Alt+Del组合键)进行修改,同时必须遵循“强密码策略”与“权限验证”两大原则,才能确保操作的安全性与有效性,对于不同操作系统,具体实施细节虽有差异,但核心逻辑始终围绕着……

    2026年3月15日
    12900
  • 服务器B1OS的启动模式有哪些?,如何设置?

    服务器B1OS的启动模式主要包括传统Legacy模式、UEFI模式以及兼容性支持模块CSM模式,其中UEFI是当前主流选择,Legacy主要用于兼容老旧操作系统,服务器B1OS启动模式有哪些?三大模式详解Legacy模式:传统兼容之选Legacy模式源自早期PC架构,服务器B1OS沿用至今,它基于16位BIOS……

    2026年7月25日
    2300

发表回复

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