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

相关推荐

  • 金铲铲的服务器有哪些,哪个大区最稳定呢?

    金铲铲之战的服务器主要分为微信区和QQ区,涵盖经典区、时空裂痕、英雄之黎明等大区,每个大区下包含多个服务器,玩家可通过游戏登录界面或官网查询完整列表,金铲铲服务器分类详解官方服务器分区金铲铲之战的服务器架构基于腾讯游戏平台,主体分为微信区和QQ区,两者数据不互通,微信区包含如“微信1区”“微信2区”等,QQ区类……

    2026年8月24日
    200
  • 广东GPU服务器租用哪家最合适,哪家便宜?

    广东GPU服务器租用哪家合适,答案取决于你的具体任务——模型训练首选腾讯云,推理和渲染可以考虑阿里云或华为云,而中小团队则更适合UCloud或本地IDC服务商,这个结论基于广东地区的数据中心分布、网络延迟以及各厂商的GPU实例性价比,如果你正在调研广东GPU服务器租用,不妨先明确自己的使用场景,再对比主流厂商的……

    2026年8月12日
    700
  • 个人域名可以给企业备案么?个人域名企业备案需要哪些资料

    个人域名通常无法直接通过企业备案,因为备案主体性质必须与域名持有者一致,个人域名只能备案为个人主体,而企业网站必须使用企业主体进行备案,在2026年的互联网监管环境下,域名备案的合规性已成为网站运营的底线,许多初创团队或自由职业者常因预算限制,先以个人名义注册域名,随后希望将业务转型为公司化运营,此时便面临域名……

    2026年6月10日
    5300
  • 服务器需要装什么软件?2026服务器软件推荐大全

    服务器是数字化时代的核心引擎,支撑着从网站浏览到企业应用、从数据存储到人工智能的一切,要让这台引擎高效、安全、可靠地运转,离不开一系列专业软件的协同工作,服务器核心运行的软件主要包括操作系统、Web服务器、数据库管理系统、应用服务器/运行时环境、虚拟化与容器平台、监控与管理工具、安全防护软件、文件/存储服务、备……

    服务器运维 2026年2月15日
    17100
  • Python串口通信怎么实现?python串口通讯代码

    Python操作串口通信的核心在于使用pyserial库,通过实例化Serial对象并配置波特率、数据位等参数,即可实现与硬件设备的稳定数据收发,这是嵌入式开发和物联网项目中最高效的底层通信方案,在物联网和工业自动化领域,Python凭借其简洁的语法和强大的库支持,已成为连接上位机软件与下位机硬件的首选语言,无……

    2026年7月12日
    11000
  • 服务器有2个ip地址怎么用,双IP有什么好处?

    在现代网络架构与企业级运维中,为网络设备配置多重网络接口已成为提升服务可靠性的标准做法,核心结论在于:当服务器有2个ip地址时,不仅能够实现网络链路的高可用冗余,还能通过公网与私网的逻辑隔离显著提升系统安全性,同时满足多业务部署与SSL证书绑定等复杂需求,这种配置方式是构建稳健IT基础设施的关键策略,能够有效解……

    2026年2月25日
    13900
  • 个人注册域名到期怎么办?域名过期后还能赎回吗

    个人注册域名到期后,若未在宽限期内续费,域名将进入赎回期,此时续费成本显著增加,且若超过保留期未处理,域名将被彻底释放并可能被他人抢注,因此建议立即登录注册商后台检查状态并尽快完成续费操作,域名不仅是互联网上的门牌号,更是你数字资产的核心载体,当域名到期时,许多个人站长或博主往往会陷入焦虑,担心网站数据丢失或品……

    2026年5月28日
    4100
  • 个人技能展示网站怎么做?如何打造高转化率个人简历

    打造个人技能展示网站不仅是简历的数字化延伸,更是建立职业信任背书、获取高价值工作机会的核心杠杆,建议优先选择WordPress或静态站点生成器(如Hugo)搭建独立域名站点,而非依赖第三方平台主页,在数字化招聘日益普及的今天,HR和猎头筛选候选人的方式已经发生了根本性变化,传统的PDF简历往往因为格式兼容性问题……

    2026年6月1日
    4500
  • web开发服务器端技术都有哪些?,需要掌握哪些技术?

    Web开发服务器端技术涵盖编程语言、框架、服务器软件、数据库、缓存、消息队列、容器化、云基础设施及安全监控等多个维度,选择技术栈需要根据项目规模、团队经验和运维成本综合权衡,服务器端编程语言与框架动态语言的高效开发Python 搭配 Django 或 Flask 是快速搭建后端服务的常见选择,尤其在数据分析、机……

    2026年8月3日
    300
  • 服务器怎么修改背景?服务器背景修改详细教程

    服务器修改背景的核心在于精准定位配置文件并执行规范的命令操作,无论是Linux还是Windows环境,通过远程连接工具修改系统或应用层面的配置文件,随后执行重启或刷新命令,是完成这一操作的标准流程,修改服务器背景不仅仅是更换一张图片,更是对系统桌面环境、远程连接服务配置以及文件权限管理的综合运用,对于运维人员而……

    2026年3月22日
    11500

发表回复

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