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.toml 或 setup.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-<项目名> 的命名规范。
  • 避免打包虚拟环境: 不要将 venv 或 virtualenv 打包进 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

相关推荐

  • 珠海高防服务器防御力怎么评估,主要看哪些指标?

    评估珠海高防服务器防御能力,不能只看商家宣传的防御峰值,而要关注机房的真实清洗架构、带宽冗余、硬件策略以及历史防御案例,这些才是决定业务能否扛住攻击的关键,很多人在选珠海高防服务器时,容易被“单机防御300G”“500G防护”这类数字吸引,但实际用起来,攻击一来可能直接丢包、延迟飙升,甚至服务器被黑洞,防御评估……

    2026年8月11日
    600
  • 高端网站建设网站怎么选?高端建站公司哪家好

    在2026年的搜索生态中,高端网站建设网站的核心价值已从单纯的视觉展示跃升为以AI体验与数据转化为底座的品牌数字资产,唯有融合E-E-A-T权威架构与生成式交互,方能真正占据流量与信任的高地,2026高端网站建设:重塑数字资产的底层逻辑行业洗牌与权威数据印证根据中国互联网络信息中心(CNNIC)2026年最新报……

    2026年4月29日
    6900
  • 服务器暂停了怎么办,服务器暂停是什么原因?

    服务器暂停是数字化业务运营中不可避免的系统性风险,其核心结论在于:建立高可用性架构和标准化的应急响应机制,是应对服务中断、保障业务连续性的唯一最优解, 企业不应仅仅关注如何避免服务器暂停,而应将重点放在如何通过冗余设计、自动化运维和实时监控,将暂停对业务的影响降至最低,通过构建完善的容灾体系,企业可以将意外停机……

    2026年2月25日
    11200
  • 负载均衡和CDN到底有什么区别,哪个更好?

    负载均衡和CDN虽然都能提升网站性能,但负载均衡负责在多台服务器之间分配流量以保障高可用,而CDN负责将内容缓存到边缘节点来加速用户访问,两者在原理、成本和应用场景上有本质区别,负载均衡和CDN的区别:核心原理与应用场景对比要理解两者的区别,首先要清楚它们各自扮演的角色,负载均衡更像一个流量调度员,CDN则像一……

    2026年7月21日
    500
  • 不常用的web服务器有哪些

    在主流Web服务器之外,Lighttpd、Cherokee、Hiawatha、Caddy和OpenLiteSpeed等一批小众但功能强大的服务器,在特定场景下有着不可替代的优势,Lighttpd:轻量级的高并发能手Lighttpd采用事件驱动架构,在处理大量并发连接时内存占用极低,非常适合静态文件服务、图片服务……

    2026年8月18日
    600
  • 服务器安装的操作系统都有什么作用?服务器操作系统主要功能和作用有哪些

    服务器安装的操作系统都有什么作用?核心结论:服务器操作系统是服务器的“大脑”与“指挥中枢”,它直接决定硬件资源调度效率、服务稳定性、安全防护能力及扩展兼容性,是支撑所有上层应用(如网站、数据库、云平台等)稳定运行的底层基石,资源管理:高效调度硬件能力服务器操作系统的核心职责是统一管理CPU、内存、存储与I/O资……

    服务器运维 2026年4月17日
    5000
  • 服务器怎么开启ip访问?服务器IP访问设置教程

    服务器开启IP访问的核心在于正确配置Web服务器软件(如Nginx、Apache、IIS)的监听参数、防火墙端口放行以及云服务商安全组规则的设置,三者缺一不可,只有当服务器操作系统、网络防火墙和应用层服务同时允许特定端口(通常为80或443)的数据流通过,且域名解析或本地hosts文件正确指向该IP时,IP访问……

    2026年3月16日
    11200
  • 服务器搭建完成后怎么测试,服务器搭建后无法访问怎么办?

    服务器交付上线并不意味着工作的终结,反而是运维挑战的真正开始,核心结论在于:服务器搭建完成后,必须立即进行安全加固、性能调优、监控部署及备份策略制定,才能确保业务长期稳定运行, 许多运维人员往往忽视了这一阶段的关键细节,导致系统在后续面临高并发或恶意攻击时迅速崩溃,针对服务器搭建完成后问题的处理,建立一套标准化……

    2026年3月1日
    11600
  • 防火墙技术论文,探讨其在网络安全中的实际应用与挑战?

    构建网络安全的动态防御基石防火墙是现代网络安全架构中不可或缺的核心防线,其本质是通过预定义的安全策略,在网络边界或关键节点对数据流进行精细化控制与深度检测,有效隔离内部可信网络与外部潜在威胁,从而防止未授权访问、抵御恶意攻击并保护关键数据资产, 防火墙技术演进与核心类型防火墙技术已从基础访问控制发展为集深度防御……

    2026年2月3日
    14600
  • 个人网站及公众号如何选择服务器?云服务器和虚拟主机哪个更适合

    个人网站首选轻量级云服务器(如阿里云轻量应用服务器)以平衡性能与成本,公众号则无需独立服务器,直接依托平台生态即可,服务器选型核心逻辑:场景决定配置很多人误以为建站就是买服务器,其实服务器只是“地基”,你的业务类型才是“建筑图纸”,个人博客、技术展示站与公众号运营,两者的底层逻辑完全不同,前者需要独立的数据控制……

    2026年5月26日
    5500

发表回复

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