Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/10/2019, à 07: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, à 07:50)

Hors ligne

#2 Le 15/10/2019, à 12: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, à 12:55)

Hors ligne

#3 Le 15/10/2019, à 13: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, à 13: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, à 13:59)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#5 Le 15/10/2019, à 14: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, à 14: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, à 17: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