web-dev-qa-db-fra.com

Comment créer un paquet deb pour un script python3?

J'ai un fichier Python, main.py. J'aimerais pouvoir en faire un paquet .deb, puis pouvoir exécuter main.py en tapant le nom du paquet depuis le terminal. Il est écrit en Python 3, le nom du paquet doit donc être exécuté:

python3 main.py

La seule dépendance que je connaisse est python3.

J'ai essayé de créer un deb avec une dépendance de python3, puis de lancer python3 packagename, mais je reçois:

/usr/bin/python3: can't find '__main__' module in 'packagename'

Essayer d’utiliser Debreate pour la création de paquetages ne s’ouvre pas avec:

Traceback (most recent call last):
  File "/usr/bin/debreate", line 12, in <module>
    import wx, sys, os, debreate, db, language, shutil
  File "/usr/share/debreate/debreate.py", line 23, in <module>
    import os, sys, wx.lib.dialogs, db, webbrowser, language, shutil, subprocess
  File "/usr/share/debreate/db.py", line 5, in <module>
    import wx, wx.combo, wx.lib.mixins.listctrl as LC, os, sys, language
ImportError: No module named combo
6
meecoder

La création d'un fichier .deb pour un script python3 est très simple et ne nécessite que quelques modifications dans les règles debian/rules et debian/control si vous êtes familier avec l'empaquetage python2.

En un mot:

  1. Créer le répertoire source du paquet

    mkdir myscript-0.1
  2. Copiez votre script python3 (ou l'exemple de script ci-dessous) dans le répertoire source

    cp ~/myscript myscript-0.1
    cd myscript-0.1

    Exemple de script:

    #!/usr/bin/python3
    
    if __== '__main__':
        print("Hello world")
  3. Créer le squelette de l'emballage (debian/*)

    dh_make -s --indep --createorig
  4. Supprimer les exemples de fichiers

    rm debian/*.ex debian/*.EX debian/README.*
  5. Editer debian/control

    Remplacez son contenu par le texte suivant:

    Source: myscript
    Section: utils
    Priority: optional
    Maintainer: Name, 
    Build-Depends: debhelper (>= 9), python3
    Standards-Version: 3.9.5
    X-Python3-Version: >= 3.2
    
    Package: myscript
    Architecture: all
    Depends: ${misc:Depends}, ${python3:Depends}
    Description: insert up to 60 chars description
     insert long description, indented with spaces
    
  6. debian/install doit contenir le script à installer ainsi que le répertoire cible

    echo myscript usr/bin > debian/install
  7. Éditer debian/rules

    Remplacez son contenu par le texte suivant:

    #!/usr/bin/make -f
    
    %:
        dh $@ --with=python3

    Note: c'est une tabulation avant dh $@, pas quatre espaces!

  8. Construire le paquet

    debuild -us -uc

Vous recevrez quelques avertissements/erreurs Lintian mais votre paquet est prêt à être utilisé:

../myscript_0.1-1_all.deb
10
Sylvain Pineau

Pour l’erreur que vous rencontrez dans debreate ,

Sudo apt-get install python-wxgtk2.8

source: source de la solution ci-dessus

0
Sourav Mishra