2017-03-13 2 views
0

J'ai un script python MyScript.py. Je cours en utilisant python MyScript.py [options]. Mais je veux en faire un paquetage rpm. J'ai donc créé setup.py et créé le paquet rpm en utilisant python setup.py bdist_rpm. Pour cela, je changé la structure de fichier comme ci-dessous:paquet rpm de source python

- 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'] 
    ) 

Quand je lance python setup.py bdist_rpm, je reçois 2 fichiers rpm (noarch.rpm, src.rpm) et 1 fichier tar.gz sous le dossier dist qui est créé automatiquement. Mais quand j'utilise rpm -i sur le fichier norach.rpm, il est juste dit que le paquet est installé mais je ne peux pas utiliser le paquet quand j'essaye d'exécuter la commande MyScript dans bash. Est-ce que je fais quelque chose de mal ici? S'il vous plaît, guidez moi si c'est le cas. Je suis un peu débutant à l'emballage.

Répondre

2

Oui, vous faites quelque chose de mal :)

Le fait que vous avez créé un régime et fourni un ensemble MyScript ne signifie pas que l'installation du régime exposera un exécutable pour vous d'exécuter (c.-à-$ MyScript .... Pour aussi en mettant un exécutable disponible qui interagira avec le paquet, vous devez fournir un entry_point dans votre fichier setup.py

Un point d'entrée mappe à peu près un script qui sera installé dans le chemin d'une fonction dans votre code et

Ajouter som ething comme ceci:

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 est le nom de la fonction dans le paquet MyScript dans le module __init__ à appeler.

Le format général (pour référence ultérieure) d'un console_script est:

'name_of_executable = package.module:function_to_execute' 

Un exemple peut être trouvé ici: https://chriswarrick.com/blog/2014/09/15/python-apps-the-right-way-entry_points-and-scripts/