Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > python dbus


Автор: cvetik 19.9.2008, 14:12
День добрый!!!! Есть написанный на питоне интерфейс d-bus  с методами...приложения взаимодействуют через собственную шину... Пректи рабочий и отлаженный...работал на Fedora...
Недавно встала необходимость перенести на другую машину, на которой стоит фряха... установила там   все для dbus. Но возникает ошибка
Код

Traceback (most recent call last):
  File "/usr/local/paysystem/pylibs/iface_dbus.py", line 18, in ?
    bus = dbus.StarterBus(mainloop=main_loop)
  File "/usr/local/lib/python2.4/site-packages/dbus/_dbus.py", line 238, in __new__
    mainloop=mainloop)
  File "/usr/local/lib/python2.4/site-packages/dbus/_dbus.py", line 108, in __new__
    bus = BusConnection.__new__(subclass, bus_type, mainloop=mainloop)
  File "/usr/local/lib/python2.4/site-packages/dbus/bus.py", line 125, in __new__
    bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: dbus-launch failed to autolaunch D-Bus session: Autolaunch requested, but X11 support not compiled in.
Cannot continue.



В чем проблема не могу понять, объясните пожалуйста...

Автор: Fenrir13 20.9.2008, 13:37
Цитата(cvetik @  19.9.2008,  14:12 Найти цитируемый пост)
X11 support not compiled in

Нехватка иксов (X Window System)?

Автор: cvetik 22.9.2008, 09:01
единственный спопсоб зарустить написанный интерфейс под d-bus делать запуск питоновского кода через dbus-launch. При этов все запускается, ошибок не показывает...Используется системная шина для взаимодествия приложений...Все это пробуется на фряхе...Но как только я пытаюсь обратиться к одному из методов из интерфейса, возникает сообщение об ошибке  The name org.SmtpIface was not provided by any .service files.
Причину возникновения этой ошибки не могу понять.... смотрите смаи:
вот описание интерфейса
Код

main_loop = DBusGMainLoop()
bus = dbus.SessionBus(mainloop=main_loop)

DBUS_NAME = "org.SmtpIface"
DBUS_PATH = "/org/SmtpIface"

class SmtpIface(dbus.service.Object):
        def __init__(self):
                global bus
                bus_name = dbus.service.BusName(DBUS_NAME, bus=bus)
                dbus.service.Object.__init__(self, bus_name, DBUS_PATH)
...


а вот использование одного из методов:
Код

self.bus = dbus.SessionBus()
obj = self.bus.get_object('org.SmtpIface', '/org/SmtpIface')
iface = dbus.Interface(obj, 'org.SmtpIface')
iface.add_on_list(self.out_dict


Как видите в коде причин для возникновения этих ошибок нет....Более того, запуск кода я делаю через sudo dbus-launch. Так что из-за привелегий такой ошибки в приницпе быть не может...Какие могут быть идеи и соображения?

Автор: Lumen2000 14.3.2009, 23:23
Может кто-нибудь знает, возможно ли соединить d-bus на разных машинах,
что бы возможно было запустить сервис на одной машине, а клиент на другой?

Автор: pythonwin 23.3.2009, 07:20
Цитата(Lumen2000 @  15.3.2009,  02:23 Найти цитируемый пост)
что бы возможно было запустить сервис на одной машине, а клиент на другой?

сделай клиент-серверное приложение и обменивайся данными между приложениями - можешь посмотреть rpc-xml

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)