проблема с питоном dbus - PullRequest
2 голосов
/ 20 июля 2010

У меня проблема с dbus и python. Запуск python из командной строки с указанием import dbus и затем systembus = dbus.SystemBus() не приводит к ошибкам, равно как и запуск программы, написанной другом, который также использует точно такой же код Однако при запуске программы, которую я пытаюсь написать, я получаю эту ошибку:

Traceback (most recent call last):
  File "dbtest.py", line 26, in <module>
    a = getDevs()
  File "dbtest.py", line 7, in getDevs
    bus = dbus.SystemBus()
AttributeError: 'module' object has no attribute 'SystemBus'

Есть идеи, что я делаю не так? Я не думаю, что я полностью понимаю возвращенную ошибку. Код, который у меня пока есть:

#!/usr/bin/env python
import dbus

def getDevs():
        bus = dbus.SystemBus()

if __name__ == "__main__":
        a = getDevs()

1 Ответ

8 голосов
/ 20 июля 2010

Очевидная проблема заключается в том, что когда вы импортируете dbus, он не получает все методы вместе с ним.

И в вашей программе, и в программе вашего друга выполните print dbus.__file__.Это покажет, какой .pyc он использует.Если они отличаются, вы не импортируете правильный модуль dbus.

Я собираюсь предположить, что вы импортируете какой-то случайный файл с именем dbus.py в локальный каталог.Или, если ваш скрипт называется «dbus.py», вы просто импортируете себя, и, к счастью, python не выполняет рекурсивный импорт.Самым простым решением в этом случае является переименование файла-нарушителя во что-то другое.

...