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
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:
Créer le répertoire source du paquet
mkdir myscript-0.1
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")
Créer le squelette de l'emballage (debian/*)
dh_make -s --indep --createorig
Supprimer les exemples de fichiers
rm debian/*.ex debian/*.EX debian/README.*
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
debian/install doit contenir le script à installer ainsi que le répertoire cible
echo myscript usr/bin > debian/install
É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!
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
Pour l’erreur que vous rencontrez dans debreate ,
Sudo apt-get install python-wxgtk2.8
source: source de la solution ci-dessus