2017-03-13 20 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:私はpython setup.py bdist_rpmを実行すると

from distutils.core import setup 
setup(name='MyScript', 
     version='0.0.1', 
     author='ABC XYZ', 
     author_email='[email protected]', 
     packages=['MyScript'] 
    ) 

、私は2つのRPMファイル(noarch.rpmsrc.rpm)と1つのtar.gzファイルを取得します自動的に作成されるdistフォルダの下にあります。しかし、rpm -iファイルをnorach.rpmファイルに使用すると、パッケージがインストールされていると表示されますが、MyScriptコマンドをbashで実行しようとするとパッケージを使用できません。私はここで何か間違っていますか?もしそうなら私を案内してください。私は少し包装の初心者です。

答えて

2

はい、あなたが何かを間違って:)やっている

あなたがRPMを作成し、実行するためのRPMをインストールすると、実行ファイルを公開することを意味するものではありませんMyScriptパッケージを提供しているという事実(すなわち$ MyScript ...。もパッケージとやりとりする実行可能ファイルを作成するには、をsetup.pyファイルに提供する必要があります。

エントリポイントは、コード内の関数へのパスにインストールされるスクリプトをかなりマップします。それを実行します。

somを追加しますこのようething:

FUNC_NAMEが起動する __init__モジュールで MyScriptパッケージ内の関数の名前である
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' 
      ] 
     } 
) 

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/

関連する問題