LINUX.ORG.RU

Конфликт между python-gudev и pygobject

 , , python-gudev


0

1

Вот этот код:

import gudev
from gi.repository import GObject

def f():
    pass

client = gudev.Client([])
client.connect('uevent', f)

loop = GObject.MainLoop()
loop.run()
не запускается:
Traceback (most recent call last):
  File "gudev-test.py", line 11, in <module>
    from gi.repository import GObject
  File "/usr/lib64/python2.7/site-packages/gi/__init__.py", line 32, in <module>
    raise ImportError('When using gi.repository you must not import static '
ImportError: When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject".
Но, если импортировать gudev после GObject - он запускается, но выдает предупреждение:
/usr/lib64/python2.7/site-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion 'g_type_from_name (name) == 0' failed
  import gobject._gobject
и сегфолтится при поступлении uevent'а.

А если вместо GObject из gi.reporitory использовать старый gobject, то все работает.

Как объяснить происходящее?

★★

Последнее исправление: shatsky (всего исправлений: 1)

Как объяснить происходящее?

Предполагаю, что gudev использует старый gobject

monk ★★★★★
()
22 сентября 2014 г.

from gi.repository import GUdev
c = GUdev.Client()
for dev in c.query_by_subsystem(«block»):

... print dev.get_device_file() ... /dev/sda /dev/sda1 /dev/sda2

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.