4 步打包一个新的 Python 模块


4 步打包一个新的 Python 模块

文章插图
导读:pyp2rpm 使得创建 RPM 包的过程更加自动化 。
本文字数:4940,阅读时长大约: 5分钟
 
pyp2rpm 使得创建 RPM 包的过程更加自动化 。
 
当你安装一个应用程序时,你通常是在安装一个软件包,其中包含应用程序的可执行代码和重要文件,如文档、图标等 。在 linux上,软件一般被打包成 RPM 或 DEB 等格式,用户只要通过dnf或者apt等命令就可以进行安装了,这取决于你使用的 Linux 发行版 。然而几乎每天都有新的 Python/ target=_blank class=infotextkey>Python 模块发布,因此你很容易遇到一个尚未打包的 Python 模块 。这就是pyp2rpm存在的意义了 。
最近我在尝试安装一个叫python-concentration的模块,但是进展并不太顺利:
【4 步打包一个新的 Python 模块】 
  1.  
    $ sudo dnf install python-concentration
     
  2.  
    Updating Subscription Management repositories.
     
  3.  
    Last metadata expiration check: 1:23:32 ago on Sat 11 Jun 2022 06:37:25.
     
  4.  
    No match for argument: python-concentration
     
  5.  
    Error: Unable to find a match: python-concentration
     
 
虽然这是一个发布在 PyPi 的包,但它仍不能被打包成 RPM 包 。好消息是你可以使用pyp2rpm以一个相对简单的过程将它打包成 RPM 包 。
首先你需要设置两个目录:
 
  1.  
    $ mkdir rpmbuild
     
  2.  
    $ cd rpmbuild && mkdir SPECS
     
 
像这样去安装pyp2rpm
 
  1.  
    $ sudo dnf install pyp2rpm
     
 
1、生成 spec 文件
RPM 包的基础是一种 spec 文件,这个文件包含你创建这个包的所有信息,如所需的依赖关系、应用的版本号、安装的文件等信息 。当指向某个 Python 模块时,pyp2rpm会为它构建一个 spec 文件,你可以用它来创建 RPM 包 。
下面以python-concentration为例演示如何构建一个 spec 文件:
 
  1.  
    $ pyp2rpm concentration > ~/rpmbuild/SPECS/concentration.spec
     
 
下面是它生成的文件:
 
  1.  
    # Created by pyp2rpm-3.3.8
     
  2.  
    %global pypi_name concentration
     
  3.  
    %global pypi_version 1.1.5
     
  4.  
     
  5.  
    Name: python-%{pypi_name}
     
  6.  
    Version: %{pypi_version}
     
  7.  
    Release: 1%{?dist}
     
  8.  
    Summary: Get work done when you need to, goof off when you don't
     
  9.  
     
  10.  
    License: None
     
  11.  
    URL: None
     
  12.  
    Source0: %{pypi_source}
     
  13.  
    BuildArch: noarch
     
  14.  
     
  15.  
    BuildRequires: python3-devel
     
  16.  
    BuildRequires: python3dist(setuptools)
     
  17.  
     
  18.  
    %description
     
  19.  
    Concentration [![PyPI version]( [![Test Status]( [![Lint Status]( [![codecov](
     
  20.  
     
  21.  


    推荐阅读