ImportError:无法导入名称进程(Twisted)

时间:2014-02-05 22:18:02

标签: python twisted

我正在使用Mac OS X 10.9.1,我记得前一段时间安装了Python(我记不起为什么,考虑到Mac OS X附带它)。出于某种原因,没有安装Twisted,所以我安装了Zope和Twisted。

我正在关注本教程:http://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-server

问题是,当我运行此代码时:

from twisted.internet.protocol import Factory,Protocol
from twisted.internet import reactor

class IphoneChat(Protocol):
    def connectionMade(self):
        print "a client connected"

factory = Factory()
factory.protocol = IphoneChat
reactor.listenTCP(80, factory)
print "Iphone Chat server started"
reactor().run

我收到此错误:

Traceback (most recent call last):
  File "/Users/Mattieman/Desktop/server.py", line 4, in <module>
    from twisted.internet import reactor
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/twisted/internet/reactor.py", line 38, in <module>
    from twisted.internet import default
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/twisted/internet/default.py", line 56, in <module>
    install = _getInstallFunction(platform)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/twisted/internet/default.py", line 52, in _getInstallFunction
    from twisted.internet.selectreactor import install
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/twisted/internet/selectreactor.py", line 18, in <module>
    from twisted.internet import posixbase
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/twisted/internet/posixbase.py", line 53, in <module>
    from twisted.internet import process, _signals
ImportError: cannot import name process

所以我看了/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/twisted/internet

...似乎缺少process.py

我该怎么办?

似乎还缺少其他文件,例如_baseprocess.py

我使用了setup3.py,如果它有帮助......

1 个答案:

答案 0 :(得分:1)

您正在使用Python 2.6。你不应该使用setup3.py。您也不应该使用distutils setup.py - 类型脚本将Python库安装到OS路径中(例如/Library/Frameworks/Python.framework/Versions/2.6/)。

您的系统上可能存在随机损坏的Twisted安装(OS X本身附带Twisted副本)。或者你可能只需要清理/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/twisted中的一些垃圾。很难说哪个(这就是为什么你不应该使用setup.py来安装东西 - 这会让事情变得一团糟。)

在您清理完这些烂摊子后(除了“重新安装您的OS X”之外,我无法向您提供有关如何执行此操作的许多提示,抱歉),您有以下几种选择:

  • 在您的操作系统中使用Twisted分发版。不要尝试安装其他版本。
  • 将您的主目录视为一个更简单的“虚拟环境”并运行setup.py install --user--user告诉它将其内容留在~/.local中,至少它不会破坏您的操作系统安装)。
  • 创建virtualenv并安装新版本的Twisted

其中,您可能想要使用virtualenv。

另请注意,除非您尝试安装Twisted for Python 3,否则不应运行setup3.py。如果您尝试这样做,那么我会警告您只有部分Twisted被移植 - 这只是一小部分。例如,它不是流程支持(因此您获得的导入错误)。