【问题标题】:rpm package from python source来自 python 源的 rpm 包
【发布时间】:2017-03-13 16:26:30
【问题描述】:

我有一个 python 脚本MyScript.py。我使用python MyScript.py [options] 运行它。但我想用它制作 rpm 包。所以我创建了setup.py并使用python setup.py bdist_rpm创建了rpm包。为此,我将文件结构更改如下:

- MyScript
   - __init__.py
- setup.py

setup.py:

from distutils.core import setup
setup(name='MyScript',
      version='0.0.1',
      author='ABC XYZ',
      author_email='abc@xyz.com',
      packages=['MyScript']
      )

当我运行python setup.py bdist_rpm 时,我会在自动创建的 dist 文件夹下获得 2 个 rpm 文件(noarch.rpmsrc.rpm)和 1 个 tar.gz 文件。但是当我在norach.rpm 文件上使用rpm -i 时,它只是说安装了包,但是当我尝试在bash 中运行MyScript 命令时无法使用该包。我在这里做错了吗?如果是,请指导我。我对包装有点初学者。

【问题讨论】:

    标签: python package rpm packaging setup.py


    【解决方案1】:

    是的,你做错了什么:)

    您创建了一个 rpm 并提供了一个 MyScript 包这一事实并不意味着安装 rpm 将公开一个可执行文件供您运行(即 $ MyScript ...。还提供一个可执行文件以与该包交互,您需要在 setup.py 文件中提供entry_point

    入口点几乎可以将脚本映射到代码中的函数的路径中并运行它。

    添加如下内容:

    setup(name='MyScript',
          version='0.0.1',
          author='ABC XYZ',
          author_email='abc@xyz.com',
          packages=['MyScript'],
          entry_point={
              'console_scripts': [ 
                  'MyScript = MyScript.__init__:FUNC_NAME'
              ]
          } 
      )
    

    其中FUNC_NAME__init__ 模块中MyScript 包中要调用的函数的名称。

    console_script 的一般格式(供将来参考)是:

    'name_of_executable = package.module:function_to_execute'
    

    可以在此处找到示例:https://chriswarrick.com/blog/2014/09/15/python-apps-the-right-way-entry_points-and-scripts/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 2012-12-11
      • 1970-01-01
      • 2018-08-22
      • 2021-06-30
      • 2013-01-11
      • 2012-05-11
      相关资源
      最近更新 更多