5

私は現在、Twisted ライブラリ、特にねじれた単語を使用して、MSN とやり取りしようとしています。しかし、twisted が提供するサンプル スクリプトを実行すると、エラーが発生します。具体的には、エラーはhttp://i42.tinypic.com/wl945w.jpgにあります。スクリプトはhttp://twistedmatrix.com/projects/words/documentation/examples/msn_example.pyにあります。

プラットフォームは Python 2.6 の Vista です

編集:完全な出力:

Email (passport): mypassport@hotmail.com
Password: ******
2009-04-25 10:52:49-0300 [-] Log opened.
2009-04-25 10:52:49-0300 [-] Starting factory <twisted.internet.protocol.ClientFactory instance at 0x9d87e8c>
2009-04-25 10:52:55-0300 [Dispatch,client] Starting factory <twisted.words.protocols.msn.NotificationFactory instance at 0x9e28bcc>
2009-04-25 10:52:55-0300 [Dispatch,client] Stopping factory <twisted.internet.protocol.ClientFactory instance at 0x9d87e8c>
2009-04-25 10:52:55-0300 [Notification,client] Unhandled Error
    Traceback (most recent call last):
      File "/usr/local/lib/python2.5/site-packages/twisted/python/log.py", line 84, in callWithLogger
        return callWithContext({"system": lp}, func, *args, **kw)
      File "/usr/local/lib/python2.5/site-packages/twisted/python/log.py", line 69, in callWithContext
        return context.call({ILogContext: newCtx}, func, *args, **kw)
      File "/usr/local/lib/python2.5/site-packages/twisted/python/context.py", line 59, in callWithContext
        return self.currentContext().callWithContext(ctx, func, *args, **kw)
      File "/usr/local/lib/python2.5/site-packages/twisted/python/context.py", line 37, in callWithContext
        return func(*args,**kw)
    --- <exception caught here> ---
      File "/usr/local/lib/python2.5/site-packages/twisted/internet/selectreactor.py", line 146, in _doReadOrWrite
        why = getattr(selectable, method)()
      File "/usr/local/lib/python2.5/site-packages/twisted/internet/tcp.py", line 460, in doRead
        return self.protocol.dataReceived(data)
      File "/usr/local/lib/python2.5/site-packages/twisted/protocols/basic.py", line 238, in dataReceived
        why = self.lineReceived(line)
      File "/usr/local/lib/python2.5/site-packages/twisted/words/protocols/msn.py", line 651, in lineReceived
        handler(params.split())
      File "/usr/local/lib/python2.5/site-packages/twisted/words/protocols/msn.py", line 827, in handle_USR
        d = _login(f.userHandle, f.password, f.passportServer, authData=params[3])
      File "/usr/local/lib/python2.5/site-packages/twisted/words/protocols/msn.py", line 182, in _login
        reactor.connectSSL(_parsePrimitiveHost(nexusServer)[0], 443, fac, ClientContextFactory())
    exceptions.TypeError: 'NoneType' object is not callable

2009-04-25 10:52:55-0300 [Notification,client] Stopping factory <twisted.words.protocols.msn.NotificationFactory instance at 0x9e28bcc>
4

2 に答える 2

3

MSN には SSL 接続が含まれるため、使用するには pyOpenSSL をインストールする必要があります。あなたはおそらくそうではないようです。ただし、これは Twisted が依存関係の欠落を報告するのにあまり良い方法ではありません。このレポートを改善するために、Twisted イシュー トラッカーにチケットを提出することをお勧めします。

于 2009-04-25T13:59:35.933 に答える
2

どうしたの

この例外は、None のオブジェクトを呼び出そうとしたときに発生します。これをチェックしてください:

>>> a = str
>>> a() # it's ok, a string is a callable class
''
>>> a = None
>>> a() # it fails, None a special Singleton not meant to be called

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    a()
TypeError: 'NoneType' object is not callable

できること

そのように推測することはできないので、デバッグを行う必要があります。

どうやら、最後の行 (refactor.connectSSL...) には 3 つのオブジェクト呼び出しが含まれており、オブジェクトの 1 つは None です。

デバッガーに慣れていない場合に最初にできることは、行の各要素を取得してその直前に追加する場合です。

assert object1 is None 
assert object2 is None

次に、例外のソースを取得します。その後、このオブジェクトが [なし] に設定されている理由を確認します。おそらくドキュメントをチェックして、初期化された可能性のあるメソッドがNoneを返す場合を確認する必要があります。

力がありますように...

于 2009-04-25T13:57:27.390 に答える