2017-03-13 36 views
0

我有一個python腳本MyScript.py。我運行它使用python MyScript.py [options]。但我想從它製作rpm包。所以我創建了setup.py並使用python setup.py bdist_rpm創建了rpm包。爲此,我變爲如下文件結構:來自python源的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='[email protected]', 
     packages=['MyScript'] 
    ) 

當運行python setup.py bdist_rpm,我得到2個rpm文件(noarch.rpmsrc.rpm)和1個tar.gz文件在自動創建的dist文件夾下。但是當我在norach.rpm文件上使用rpm -i時,它只是說已安裝軟件包,但當我嘗試在bash中運行MyScript命令時,我無法使用該軟件包。我在這裏做錯了什麼?請指導我如果是這樣。我有點初學者包裝。

回答

2

是的,你正在做的事情錯了:)

您所創建的轉速,並提供了MyScript包並不意味着安裝RPM會暴露一個可執行文件,您可以運行的事實(即$ MyScript ...。要還使一個可執行文件可以與軟件包交互,你需要在你的setup.py文件中提供一個entry_point

一個入口點幾乎映射了一個腳本,它將被安裝在你的代碼中的一個函數的路徑中,運行它

Add som ething這樣的:

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

FUNC_NAME其中在MyScript__init__模塊來調用函數的名稱。一個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/