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

相关推荐

  • 服务器怎么安装操作系统版本号?服务器系统安装步骤详解

    服务器安装操作系统的核心在于精准规划、严谨执行与验证,成功的关键不仅在于系统的安装,更在于对硬件兼容性的预判、引导模式的正确配置以及驱动程序的匹配,整个过程是一个逻辑严密的工程部署,而非简单的软件复制,必须确保硬件资源与操作系统版本号的完美契合,才能构建稳定高效的计算基础, 安装前的核心规划与准备在开始安装之前……

    2026年3月21日
    16400
  • Python拨号怎么实现?python自动拨号代码

    通过Python实现拨号功能,核心在于利用pyserial库控制串口或调用os.system执行系统底层命令,具体方案需根据是硬件调制解调器还是软件软拨号场景而定,Python拨号的底层逻辑与硬件交互在深入代码之前,我们需要厘清“拨号”在计算机语境下的真实含义,现代操作系统中,纯粹的模拟信号拨号已逐渐被数字连接……

    2026年7月5日
    9100
  • 佛山电子商务网站建设多少钱,哪家公司好?

    佛山电子商务网站建设的核心在于将本地产业优势与用户体验、SEO技术深度融合,以佛山制造为基础,打造既能承载交易又能持续获客的数字化平台,佛山电商网站功能规划:从展示到交易的关键步骤很多佛山企业最初只把网站当作一个线上名片,但2026年的电商环境要求网站必须承载从商品展示、在线询盘到订单处理的完整闭环,功能规划不……

    2026年7月15日
    1400
  • 服务器双核e5性能到底怎么样,多少钱一台

    双核E5服务器,即搭载Intel Xeon E5系列低核心处理器的服务器,凭借其稳定的平台和较低功耗,在入门级持续运营场景中是一个值得考虑的选择,双核e5服务器性能怎么样?适合哪些场景?性能表现:跑分不高,但平台足够稳双核E5处理器,比如E5-2603系列,物理核心数通常在4核左右,线程数8个,主频在1.8GH……

    2026年8月8日
    1400
  • 阿拉尔云服务器有哪些

    阿拉尔云服务器选择主要集中在国内主流云服务商以及专业IDC品牌,其中简米科技和酷番云凭借多年行业积淀与全牌照资质,在稳定性与合规性上表现突出,适合对备案和本地化服务有要求的用户,阿拉尔云服务器市场现状阿拉尔位于新疆南部,地理上属于西北地区,近年来随着数字经济发展,当地企业及个人站长对云服务器的需求逐步上升,由于……

    2026年8月21日
    300
  • 服务器有哪些接口,服务器常见接口类型有哪些

    服务器接口是连接服务器内部组件与外部网络、存储设备以及管理终端的桥梁,直接决定了服务器的性能上限、运维效率以及扩展能力,根据功能属性,这些接口主要分为物理硬件接口(用于数据传输、硬件管理)和逻辑软件接口(用于系统控制、API调用),企业在进行IT架构搭建时,明确服务器有哪些接口并合理规划其配置,是保障业务高可用……

    2026年2月18日
    15200
  • 服务器异常外f显示正常是什么原因,服务器报错外f如何解决

    服务器外部访问显示正常而内部报错或运行异常,通常是监控盲区、权限配置错误或日志记录缺失导致的“假性正常”,这种状态极具隐蔽性,极易造成业务中断风险,必须通过全链路排查予以解决,核心症结:监控盲区与假性健康的危害当服务器异常外f显示正常时,运维人员最容易陷入麻痹大意,外部监控探针仅能探测端口存活或HTTP状态码2……

    2026年3月25日
    9200
  • 服装外贸网站建设

    服装外贸网站建设的核心是围绕海外买家的采购习惯与搜索行为,搭建结构清晰、加载迅速且具备专业度的独立站,从而在激烈的搜索竞争中脱颖而出,对于服装出口企业,网站不是电子版画册,而是主动获客的渠道,从域名选择到支付对接,每个环节都会影响买家询盘的决策速度,结合近年来的项目经验,我把建站过程中最容易被忽略但决定成败的几……

    2026年7月14日
    500
  • 服务器极限性能如何压测,服务器性能优化怎么做

    实现服务器极限性能并非单纯依赖硬件堆砌,而是一项涉及硬件架构、操作系统内核、网络协议栈及应用层代码的系统性工程,核心结论在于:性能瓶颈通常遵循“木桶效应”,只有通过全栈协同优化,消除I/O等待、降低上下文切换开销并最大化CPU缓存命中率,才能真正释放算力潜能,这要求运维与开发人员打破层级壁垒,从底层硬件到上层应……

    2026年2月18日
    15900
  • Python Fabric是什么?Fabric自动化运维工具怎么用

    Python Fabric 是自动化运维和部署的核心工具,它通过 SSH 协议在本地或远程执行命令,极大提升了服务器管理的效率与准确性,为什么选择 Python Fabric 进行自动化运维在传统的服务器管理场景中,运维人员往往需要手动登录每一台服务器执行命令,这种方式不仅效率低下,而且容易因人为失误导致生产事……

    2026年7月10日
    6500

发表回复

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