A dbus.mainloop.NativeMainLoop instance is required [Was: Re: dbus-python: support for Windows and OS X]
Lukas Hetzenecker
lukas.hetzenecker at gmail.com
Wed Feb 2 10:16:41 PST 2011
I was able to compile dbus and dbus-python on Windows without any problems,
but now I get strange error messages when I try to create a D-Bus service:
Windows XP; dbus 1.4.1-2
C:\Python27\Lib\site-packages\dbus>C:\Python27\python.exe
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]
on win32
>>> import sys
>>> import dbus
>>> import dbus.service
>>> import dbus.mainloop.qt
>>> from PyQt4 import QtCore
>>>
>>> app = QtCore.QCoreApplication(sys.argv)
>>> mainloop = dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True)
>>> sb = dbus.SessionBus()
>>> name = dbus.service.BusName("net.sourceforge.series60remote", sb)
>>> obj = dbus.service.Object.__init__(dbus.service.Object(), sb,
'/Series60Remote')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\dbus\service.py", line 480, in __init__
self.add_to_connection(conn, object_path)
File "C:\Python27\lib\site-packages\dbus\service.py", line 571, in
add_to_connection
self._fallback)
RuntimeError: To make asynchronous calls, receive signals or export objects,
D-Bus connections must be attached to a main loop by passing mainloop=... to
the constructor or calling dbus.set_default_main_loop(...)
But when I try to call dbus.set_default_main_loop I get this error:
>>> dbus.set_default_main_loop(mainloop)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: A dbus.mainloop.NativeMainLoop instance is required
which is really odd, because mainloop is an instance of
dbus.mainloop.NativeMainLoop:
>>> isinstance(mainloop, NativeMainLoop)
True
>>> dbus.version
(0, 83, 2)
The same code works on a Linux system without any problems:
Fedora 14; dbus 1.4.0-2
Python 2.7 (r27:82500, Sep 16 2010, 18:02:00)
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
>>> import sys
>>> import dbus
>>> import dbus.service
>>> import dbus.mainloop.qt
>>> from PyQt4 import QtCore
>>> app = QtCore.QCoreApplication(sys.argv)
>>> mainloop = dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True)
>>> sb = dbus.SessionBus()
>>> name = dbus.service.BusName("net.sourceforge.series60remote", sb)
>>> obj = dbus.service.Object.__init__(dbus.service.Object(), sb,
'/Series60Remote')
>>> dbus.version
(0, 83, 0)
Does anybody know what causes this odd behaviour?
Thanks,
Lukas
Am Donnerstag, 27. Januar 2011, 23:13:26 schrieb Ralf Habacker:
> Am 26.01.2011 10:56, schrieb Lukas Hetzenecker:
> > Hello,
> >
> > I'm the developer of the cross-platform application Series60-Remote,
> > which is written in Python. I would like to use an inter-process
> > communication framework and D-Bus seems to be a great choice.
> > Are there already python bindings which support also Windows (and OS X)?
> >
> > I used the binary package for the D-Bus server of the KDE-Windows
> > project and this seems to work correctly. But I can't get the python
> > bindings to work. I followed the instructions of the deluge project
> > [1], but they seem to be outdated (they switched to an other IPC
> > framework in January 2010).
> >
> > Is there anybody who has used dbus-python already on Windows or has an
> > installation howto?
>
> In the KDE on windows buildsystem there is a build-from-source-package
> for dbus-python (it works at least for msvc release builds), see
> http://websvn.kde.org/trunk/kdesupport/emerge/portage/testing/dbus-python/
>
> Regards
> Ralf
> _______________________________________________
> dbus mailing list
> dbus at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dbus
More information about the dbus
mailing list