Pages : 1
#1 Le 15/10/2019, à 06:44
- Chaosphere
Packaging .deb appli Python
Bonjour,
J'aimerai l'avis éclairé des spécialistes...
Je suis en train de développer une petite appli en Python / GTK. J'aimerai bien à terme pouvoir la distribuer avec un .deb voir même grâce à un ppa.
Donc j'ai créé un virtualenv, je développe, puis je fait :
pip3 freeze > requirement.txt
Requirement.txt :
pycairo==1.18.1
PyGObject==3.34.0
squarify==0.4.3
Je transfert mon code sur un autre ordi, je recréé un virtualenv puis je fait :
pip3 install -r requirement.txt
Et là c'est le drame : pip3 refuse d'installer PyGObject et pycairo.
Après quelques recherches sur le web, la seule solution serait d'installer ces deux libs avec un "apt install", seulement en faisant ça je perd le bénéfice du virtualenv...
Et du coup si j'installe ces deux lib avec un apt-get est-ce que je pourrai les mettre dans le fichier "CONTROL" du .deb à la ligne "Depends:" pour qu'il me les installes automatiquement ?
Autre question : les librairies Python qu'on installe avec pip3, est-ce que c'est géré aussi par le .deb ou est-ce qu'il faut obligatoirement créer un fichier setup.py ?
J'avoue c'est un peu confus là...
Edit :
A cette adresse : https://pygobject.readthedocs.io/en/lat … ng-started
Ils disent
Installing from PyPI with pip:
Open a terminal and enter your virtual environment
Execute sudo apt install libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 to install the build dependencies and GTK
Execute pip3 install pycairo to build and install Pycairo
Execute pip3 install PyGObject to build and install PyGObject
Ca veut dire que dans les dépdendances du fichier CONTROL je devrai mettre libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0
Puis mettre pycairo et PyGObject dans le le requirement.txt ?
Dernière modification par Chaosphere (Le 15/10/2019, à 06:50)
Hors ligne
#2 Le 15/10/2019, à 11:52
- Roschan
Re : Packaging .deb appli Python
Et du coup si j'installe ces deux lib avec un apt-get est-ce que je pourrai les mettre dans le fichier "CONTROL" du .deb à la ligne "Depends:" pour qu'il me les installes automatiquement ?
Oui, tel est le principe, et l'intérêt, des paquets .deb
Autre question : les librairies Python qu'on installe avec pip3, est-ce que c'est géré aussi par le .deb ou est-ce qu'il faut obligatoirement créer un fichier setup.py ?
Les librairies gérées par pip3 sont gérées par pip3, je n'ai jamais développé en me reposant sur ce truc mais en tant qu'utilisateur je t'assure que c'est distinct. Si ce que tu veux dire, c'est que ton paquet .deb pourrait dépendre de pip3 et que pip3 installe des libs, ça me paraît être une idée bizarre en termes de gestion de la compatibilité avec la lib en question, et sans doute un bazooka pour tuer une mouche si la librairie existe en .deb
Ca veut dire que dans les dépdendances du fichier CONTROL je devrai mettre libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0
Non, pour plusieurs raisons :
- gcc ? libcairo2-dev ? fait gaffe avec les documentations des bindings gobject de ce genre, une bonne part est auto-générée à partir de la doc en C, et par exemple ça pour moi c'est de la merde. Si cairo (version normale, pas de dev) est installé et que python3-gi-cairo et gir1.2-gtk-3.0 le sont aussi, il n'y a aucune raison de nécessiter compiler quoi que ce soit en C
- [en partant du principe que la liste est bonne] excepté gir1.2-gtk-3.0, les paquets de cette liste sont utiles à la construction de ton appli mais pas à son exécution, donc ça irait dans Build-Depends, pas dans Depends
- [en partant du principe que la liste est bonne] ce serait peut-être valable pour ton environnement de développement, mais il n'y a pas besoin de tout ça pour simplement construire le paquet .deb que tu distribueras
Une appli basée sur pycairo et pygobject j'en ai aussi (il n'y a pas squarify dans mon cas), et le control ressemble à ça https://github.com/maoschanz/drawing/bl … an/control et à moins que j'ai encore oublié de commit une remarque de frenchy82 il devrait être correct
Dernière modification par Roschan (Le 15/10/2019, à 11:55)
Hors ligne
#3 Le 15/10/2019, à 12:21
- Chaosphere
Re : Packaging .deb appli Python
Les librairies gérées par pip3 sont gérées par pip3, je n'ai jamais développé en me reposant sur ce truc mais en tant qu'utilisateur je t'assure que c'est distinct. Si ce que tu veux dire, c'est que ton paquet .deb pourrait dépendre de pip3 et que pip3 installe des libs, ça me paraît être une idée bizarre en termes de gestion de la compatibilité avec la lib en question, et sans doute un bazooka pour tuer une mouche si la librairie existe en .deb
Justement la librairie n'existe pas en .deb...
Non, pour plusieurs raisons :
- gcc ? libcairo2-dev ? fait gaffe avec les documentations des bindings gobject de ce genre, une bonne part est auto-générée à partir de la doc en C, et par exemple ça pour moi c'est de la merde. Si cairo (version normale, pas de dev) est installé et que python3-gi-cairo et gir1.2-gtk-3.0 le sont aussi, il n'y a aucune raison de nécessiter compiler quoi que ce soit en C
- [en partant du principe que la liste est bonne] excepté gir1.2-gtk-3.0, les paquets de cette liste sont utiles à la construction de ton appli mais pas à son exécution, donc ça irait dans Build-Depends, pas dans Depends
- [en partant du principe que la liste est bonne] ce serait peut-être valable pour ton environnement de développement, mais il n'y a pas besoin de tout ça pour simplement construire le paquet .deb que tu distribueras
Oui c'est vrai j'avais pas tilté... ce sont des libs de dev et en plus il y a gcc... je vois pas trop l’intérêt pour l'utilisateur final
Une appli basée sur pycairo et pygobject j'en ai aussi (il n'y a pas squarify dans mon cas), et le control ressemble à ça https://github.com/maoschanz/drawing/bl … an/control et à moins que j'ai encore oublié de commit une remarque de frenchy82 il devrait être correct
Ok merci, je vais prendre exemple sur ton fichier control...
Hors ligne
#4 Le 15/10/2019, à 12:59
- melixgaro
Re : Packaging .deb appli Python
salut,
SVP bibliothèques, pas librairies.
Sinon, tu pourrais envisager d'empaqueter (dans un deb à part) le module python que tu installes via pip3. Ça te facilitera la vie, je pense, et en particulier, tu contrôleras la version (imagine que la version sur pypi change et ne soit plus compatible avec ton projet).
Dernière modification par melixgaro (Le 15/10/2019, à 12:59)
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#5 Le 15/10/2019, à 13:16
- Chaosphere
Re : Packaging .deb appli Python
Salut,
Justement je ne sais pas comment il est conseillé de faire.
Et dans ce ca, si plus tard je veux mettre mon appli sur un ppa, ca va se passer comment ?
Ou alors je recopie la bibliothèque dans mon module ?
Hors ligne
#6 Le 15/10/2019, à 13:26
- melixgaro
Re : Packaging .deb appli Python
Je pense que c'est plus « poli » de l'empaqueter à part. Via ton ppa tu deviendrais un (re-)distributeur de ce module python. Par contre, je ne pourrai pas trop t'aider pour la construction du deb en question (dans ce domaine, je fais du bricolage pour l'instant). Un peu comme les autres modules python dispo via pypi ou autres et que les équipes debian empaquettent pour debian (et donc ubuntu).
Si tes utilisateur⋅rices ajoutent ton PPA dans leur source, après un apt update, le module python squarify sera « visible », tout comme ton propre logiciel. Imaginons que tu l'appelles python3-squarify et que tu l'ajoutes aux dépendances de ton deb, alors tout s'installera comme il faut.
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#7 Le 15/10/2019, à 16:04
- Chaosphere
Re : Packaging .deb appli Python
Oui mais déja que je galère avec mon .deb alors en faire encore un deuxième...
Mais bon c'est pas bête en effet...
Hors ligne
Pages : 1