来自 python 源的 rpm 包

rpm package from python source

我有一个 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 时,它只是说包已安装但是当我尝试在 [=34] 中使用 运行 MyScript 命令时我无法使用该包=].我在这里做错了什么吗?如果是这样,请指导我。我对包装有点初学者。

是的,你做错了什么:)

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

一个入口点几乎映射了一个脚本,该脚本将安装在您代码中的一个函数的路径中,然后 运行s 它。

添加如下内容:

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/