无法导入名称'pb'

时间:2016-05-12 02:49:52

标签: python python-3.x twisted

我正在使用Twisted 16.1.1和python 3.4。在版本16.1.1的twisted的文档中,there is a tutorial表示`来自twisted.spread import pb'。但是当我尝试导入它时会出现异常。我究竟做错了什么?

Traceback (most recent call last):
File "main.py", line 10, in <module>
from twisted.spread import pb
ImportError: cannot import name 'pb'

我正在跟随this tutorial。这是我的代码:

from twisted.internet import reactor
from twisted.spread import pb

class Echoer(pb.Root):
    def remote_echo(self, st):
        print('echoing:', st)
        return st

if __name__ == '__main__':
    reactor.listenTCP(8789, pb.PBServerFactory(Echoer()))
    reactor.run()

/usr/lib64/python3.4/site-packages/twisted/spread上有一个名为ui的文件夹。没有名为pb的文件夹/文件。

我将pb.py文件复制到我的python文件夹,现在当我尝试导入pb时,我得到一个异常:

Traceback (most recent call last):
File "main.py", line 2, in <module>
from twisted.spread import pb
File "/usr/lib64/python3.4/site-packages/Twisted-16.1.1-py3.4.egg/twisted/spread/pb.py", line 890
except Error, e:
            ^
SyntaxError: invalid syntax

发生了什么事?

1 个答案:

答案 0 :(得分:1)

SyntaxError 的原因是except Error, e:仅在Python 2中有效。在Python 3中,它将被编写为except Error as e:

问题不在于您的代码。底层模块尚未更新为Python 3。