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 26/09/2012, à 08:42

Endash

[Résolu] Python: No module named gi.repository

Bonjour,

Je suis un guide de prise en main de PyCairo (accessible ici).

Tout se passe bien, excepté l'affichage dans une fenêtre GTK pour laquelle il est nécessaire d'importer:

from gi.repository import Gtk

Et qui, à l’exécution, me renvoie l'erreur suivante:

ImportError: No module named gi.repository

Je n'ai pas trouvé de solution me permettant de "mettre la main" sur ce module gi.repository et l'intaller.

Quelqu'un sait-il comment résoudre ce problème ?

Dernière modification par Endash (Le 21/12/2014, à 02:26)


Asus Zenbook UX305F sous Xubuntu 18.04

Hors ligne

#2 Le 26/09/2012, à 09:06

elendil

Re : [Résolu] Python: No module named gi.repository

Salut,

Un petit coup de Google très simple et le premier résultat est le suivant : https://live.gnome.org/PyGI qui va te dire que au final ça n'existe plus vraiment et ça a été fusionné avec PyGObject.
Pour ce qui est de faire une fenêtre avec GTK regardes plutôt vers : http://pygtk.org/tutorial.html.

Elendil

Dernière modification par elendil (Le 26/09/2012, à 09:07)

Hors ligne

#3 Le 26/09/2012, à 09:14

grim7reaper

Re : [Résolu] Python: No module named gi.repository

@elendil : Non, surtout pas !
PyGTK est déprécié et n’est plus maintenu.



@Endash : C’est bien PyGi qu’il faut utiliser (installable via le paquet python-gi, et si tu veux jouer avec Cairo il faut ajouter python-gi-cairo).
Un exemple de tuto est , par contre ça n’aborde pas Cairo (mais on peut trouver 2-3 exemples sur le web).

Dernière modification par grim7reaper (Le 26/09/2012, à 09:19)

Hors ligne

#4 Le 26/09/2012, à 09:30

Endash

Re : [Résolu] Python: No module named gi.repository

Merci grim7reaper.

Peux-tu me dire quel est le nom du paquet que je suis sensé installer ? PyGi et PyGObject sont inconnus de pip install (et d'apt-get).

*** EDIT *** Trouvé dans la Logithèque Ubuntu. Merci !

Dernière modification par Endash (Le 26/09/2012, à 09:32)


Asus Zenbook UX305F sous Xubuntu 18.04

Hors ligne

#5 Le 26/09/2012, à 09:31

elendil

Re : [Résolu] Python: No module named gi.repository

@grim7reaper : Heuu alors il y a quelque chose qui m'échappe ?? Pourquoi la page Gnome déconseille son utilisation ?

Hors ligne

#6 Le 26/09/2012, à 13:52

grim7reaper

Re : [Résolu] Python: No module named gi.repository

Endash a écrit :

Merci grim7reaper.

Peux-tu me dire quel est le nom du paquet que je suis sensé installer ? PyGi et PyGObject sont inconnus de pip install (et d'apt-get).

*** EDIT *** Trouvé dans la Logithèque Ubuntu. Merci !

De rien.
Sinon avec apt-get ça devait donner :

sudo apt-get install python-gi
sudo apt-get install python-gi-cairo

Pense à passer le sujet en résolu wink



elendil a écrit :

@grim7reaper : Heuu alors il y a quelque chose qui m'échappe ?? Pourquoi la page Gnome déconseille son utilisation ?

PyGI en lui-même peut-être, car il a été mergé dans PyGObject (mais certains, dont moi parfois, parle encore de PyGI).
Au passage, ton lien dit que la page est déprécié, pas PyGI en lui-même :

https://live.gnome.org/PyGI a écrit :

This page has been deprecated (PyGI have been merged in PyGObject); Please refer to PyGObject in its place.

Et si tu vas sur PyGObject, la page n’est pas déprécié.

PyGTK est un binding spécifique Python pour GTK ou un truc du genre.
Depuis GTK3, la GLib est passé à un mécanisme d’introspection (GObject introspection) qui facilite la réalisation des binding pour chaque langage (Perl, Python, Ruby, …) et donc le nouveau binding Python est basé dessus.
L’ancien, bien que fonctionnant toujours pour le moment (et sûrement pour un certains temps encore), n’est plus activement développé. Donc c’est pas une bonne idée de partir dessus pour de nouveau développement.

Hors ligne

#7 Le 26/09/2012, à 16:06

Endash

Re : [Résolu] Python: No module named gi.repository

Finalement, le problème est toujours là, alors que les paquets sont bien installés:

endash@rigel$ sudo apt-get install python-gi python-gi-cairo
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
python-gi est déjà la plus récente version disponible.
python-gi-cairo est déjà la plus récente version disponible.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Je tombe toujours sur:

ImportError: No module named gi.repository

J'avoue également que la doc en ligne n'est pas plus claire pour moi que pour elendil.

*** EDIT ***
Je crois que le problème est lié au fait que je programme dans un environnement virtuel (virtualenv).

Dans mon environnement virtuel (env) :

(env)endash@rigel:maze$ python gtk.py 
Traceback (most recent call last):
  File "gtk.py", line 15, in <module>
    from gi.repository import Gtk
ImportError: No module named gi.repository

Mais une fois "sorti", ça fonctionne

(env)endash@rigel:maze$ deactivate
endash@rigel:maze$ python gtk.py 
>>> Ça fonctionne !

La question à 1,000,000 VND est donc: comment puis-je accéder à ces modules depuis mon environnement virtuel ? D'ailleurs, où se trouvent-ils ces modules ?
La commande "find" sur python-gi et python-gi-cairo ne trouve que la doc et rien d'autre.

Dernière modification par Endash (Le 26/09/2012, à 16:20)


Asus Zenbook UX305F sous Xubuntu 18.04

Hors ligne

#8 Le 26/09/2012, à 19:58

grim7reaper

Re : [Résolu] Python: No module named gi.repository

Je ne connais pas virtualenv mais on dirait bien qu’il ne trouve pas ce que tu installes.
À partir de là, soit tu trouves comment l’installer pour virtualenv soit tu lui dis où chercher pour utiliser ceux du système.
Pour info, python-gi installe :

python-gi: /usr/lib/libpyglib-gi-2.0-python2.7.so
python-gi: /usr/lib/libpyglib-gi-2.0-python2.7.so.0
python-gi: /usr/lib/libpyglib-gi-2.0-python2.7.so.0.0.0
python-gi: /usr/lib/pyshared/python2.7/gi/_gi.so
python-gi: /usr/lib/pyshared/python2.7/gi/_glib/_glib.so
python-gi: /usr/lib/pyshared/python2.7/gi/_gobject/_gobject.so
python-gi: /usr/lib/python2.7/dist-packages/gi/__init__.py
python-gi: /usr/lib/python2.7/dist-packages/gi/_gi.so
python-gi: /usr/lib/python2.7/dist-packages/gi/_glib/__init__.py
python-gi: /usr/lib/python2.7/dist-packages/gi/_glib/_glib.so
python-gi: /usr/lib/python2.7/dist-packages/gi/_glib/option.py
python-gi: /usr/lib/python2.7/dist-packages/gi/_gobject/__init__.py
python-gi: /usr/lib/python2.7/dist-packages/gi/_gobject/_gobject.so
python-gi: /usr/lib/python2.7/dist-packages/gi/_gobject/constants.py
python-gi: /usr/lib/python2.7/dist-packages/gi/_gobject/propertyhelper.py
python-gi: /usr/lib/python2.7/dist-packages/gi/importer.py
python-gi: /usr/lib/python2.7/dist-packages/gi/module.py
python-gi: /usr/lib/python2.7/dist-packages/gi/overrides/GIMarshallingTests.py
python-gi: /usr/lib/python2.7/dist-packages/gi/overrides/GLib.py
python-gi: /usr/lib/python2.7/dist-packages/gi/overrides/Gdk.py
python-gi: /usr/lib/python2.7/dist-packages/gi/overrides/Gio.py
python-gi: /usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py
python-gi: /usr/lib/python2.7/dist-packages/gi/overrides/Pango.py
python-gi: /usr/lib/python2.7/dist-packages/gi/overrides/__init__.py
python-gi: /usr/lib/python2.7/dist-packages/gi/overrides/keysyms.py
python-gi: /usr/lib/python2.7/dist-packages/gi/pygtkcompat.py
python-gi: /usr/lib/python2.7/dist-packages/gi/repository/__init__.py
python-gi: /usr/lib/python2.7/dist-packages/gi/types.py
python-gi: /usr/share/doc/python-gi/AUTHORS
python-gi: /usr/share/doc/python-gi/NEWS.gz
python-gi: /usr/share/doc/python-gi/README
python-gi: /usr/share/doc/python-gi/changelog.Debian.gz
python-gi: /usr/share/doc/python-gi/copyright
python-gi: /usr/share/pyshared/gi/__init__.py
python-gi: /usr/share/pyshared/gi/_glib/__init__.py
python-gi: /usr/share/pyshared/gi/_glib/option.py
python-gi: /usr/share/pyshared/gi/_gobject/__init__.py
python-gi: /usr/share/pyshared/gi/_gobject/constants.py
python-gi: /usr/share/pyshared/gi/_gobject/propertyhelper.py
python-gi: /usr/share/pyshared/gi/importer.py
python-gi: /usr/share/pyshared/gi/module.py
python-gi: /usr/share/pyshared/gi/overrides/GIMarshallingTests.py
python-gi: /usr/share/pyshared/gi/overrides/GLib.py
python-gi: /usr/share/pyshared/gi/overrides/Gdk.py
python-gi: /usr/share/pyshared/gi/overrides/Gio.py
python-gi: /usr/share/pyshared/gi/overrides/Gtk.py
python-gi: /usr/share/pyshared/gi/overrides/Pango.py
python-gi: /usr/share/pyshared/gi/overrides/__init__.py
python-gi: /usr/share/pyshared/gi/overrides/keysyms.py
python-gi: /usr/share/pyshared/gi/pygtkcompat.py
python-gi: /usr/share/pyshared/gi/repository/__init__.py
python-gi: /usr/share/pyshared/gi/types.py

Et python-gi-cairo :

python-gi-cairo: /usr/lib/pyshared/python2.7/gi/_gi_cairo.so
python-gi-cairo: /usr/lib/python2.7/dist-packages/gi/_gi_cairo.so
python-gi-cairo: /usr/share/doc/python-gi-cairo/changelog.Debian.gz
python-gi-cairo: /usr/share/doc/python-gi-cairo/copyright

(merci apt-file wink)

Hors ligne

#9 Le 27/09/2012, à 08:54

elendil

Re : [Résolu] Python: No module named gi.repository

@grim7reaper : Merci pour les infos.

grim7reaper a écrit :

Je ne connais pas virtualenv mais on dirait bien qu’il ne trouve pas ce que tu installes.
À partir de là, soit tu trouves comment l’installer pour virtualenv soit tu lui dis où chercher pour utiliser ceux du système.

Je sais juste que virtualenv permet de créer des environnements virtuels. Dans la pratique ça sert à avoir plusieurs version de librairies et/ou de python de façon à faire fonctionner chaque applications avec ses librairies.
Du coup virtualenv ne va pas utiliser les librairies installées pour le système mais celle de son environnement de façon à éviter les conflits.
Il est possible d'installer des librairies dans un environnement virtualenv via pip mais je n'en sais pas plus ne l'ayant jamais utilisé.

Elendil

Hors ligne

#10 Le 11/02/2013, à 17:29

ebouchut

Re : [Résolu] Python: No module named gi.repository

Bonjour @Endash

Pour que ton environnement virtualisé utilise les paquets systèmes que tu as installé avec apt, il faut le créer comme ceci:

  mkvirtualenv environment  --system-site-packages

Eric

Dernière modification par ebouchut (Le 11/02/2013, à 17:31)

Hors ligne