2

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()
4

1 に答える 1

10

明らかな問題は、インポートするときにdbus、すべてのメソッドを取得していないことです。

あなたのプログラムとあなたの友人のプログラムの両方で、 を実行してくださいprint dbus.__file__。これにより、使用している .pyc が表示されます。それらが異なる場合、正しい dbus モジュールをインポートしていません。

dbus.pyローカル ディレクトリで呼び出されたランダムなファイルを実際にインポートしていると思います。または、スクリプト名が「dbus.py」の場合は、自分自身をインポートしているだけで、幸運にも python は再帰的にインポートしません。この場合の最も簡単な解決策は、問題のあるファイルの名前を別の名前に変更することです。

于 2010-07-20T18:46:52.400 に答える