ImportError:没有名为twisted.internet的模块

时间:2013-07-04 19:03:00

标签: python-2.7 twisted

我安装了python 2.7.5,工作正常。

然后我安装scrapy(我认为,它在内部使用扭曲)。我的scrapy蜘蛛也很好用。

我安装了twisted:

  

sudo apt-get install python-twisted

然后,我使用显示here

的Echo Server代码创建了一个示例程序

这是代码

from twisted.internet import protocol, reactor


class Echo(protocol.Protocol):
    def dataReceived(self, data):
        self.transport.write(data)

class EchoFactory(protocol.Factory):
    def buildProtocol(self, addr):
        return Echo()

reactor.listenTCP(1234, EchoFactory())
reactor.run()

我尝试使用此命令运行此代码:

$ python twistedTester.py 
Traceback (most recent call last):
  File "twistedTester.py", line 1, in <module>
    from twisted.internet import protocol, reactor
ImportError: No module named twisted.internet

任何人都可以帮我解释为什么我的调试为什么我的扭曲包没有被Python安装拾取?

7 个答案:

答案 0 :(得分:12)

如果您使用pip,请尝试:

pip install twisted

与w3lib和lxml相同。

在某些* nix系统上,这可能会给您一个权限错误。如果发生这种情况,请尝试:

sudo -H pip install twisted

答案 1 :(得分:9)

我弄清楚为什么会发生这种错误。出于某种原因,使用apt-get安装python包并没有正确安装。

所以,我必须下载一个tar球并从中安装包。

我从here下载了Twisted tar。

我做了tar xjf Twisted-13.1.0.tar.bz2 - 这创建了一个名为 Twisted-13.1.0

的目录

接下来,cd Twisted-13.1.0 最后,python setup.py install

这给了我一个错误。 Twisted需要另一个名为zope.interface的包。所以,我从here下载了zope.interface的tar ball。然后,运行此命令tar xzf zope.interface-3.6.1.tar.gz创建了一个名为 zope.interface-3.6.1 的文件夹。所以,cd进入zope.interface-3.6.1并运行python setup.py install

注意:根据您的用户权限,您可能希望在sudo模式下执行这些命令。只需在每个命令之前添加关键字sudo。

答案 2 :(得分:5)

请将文件 twisted.py 重命名为其他内容。无论何时从文件导入函数,解释器都将在当前位置搜索文件,然后在库中搜索。所以,如果您有任何名称为&#34; twisted.py &#34;你应该重命名它。

重命名后。在再次运行之前,不要删除 twisted.pyc 文件。

答案 3 :(得分:1)

它也发生在我身上。最后,我发现有一个名为BASH的文件是我目前的工作目录。我删除了$("#myTable_info").text() twisted.py。问题解决了。

答案 4 :(得分:0)

我弄清楚为什么apt-get install python-twisted不够或者#34;正确安装&#34;,如你所说,用户1700184。

我使用的是Debian Wheezy和Python 2.7。

我只需要移动名为&#34; twisted&#34;的文件夹。从/usr/lib/python2.7/dist-packages//usr/lib/python2.7/

同样必须使用包&#34; zope&#34;以及您尝试运行代码时未安装的任何其他内容。

然而,为什么在我的情况下这甚至是必要的仍然是一个谜,因为我的sys.path确实包括/usr/lib/python2.7//usr/lib/python2.7/dist-packages,所以dist-packages下的任何内容都应该有已被翻译检索。

答案 5 :(得分:0)

我认为值得注意的是,如果您使用sudo启动python,则使用的是原始默认系统python。这是你的PATH所指向的python NOT 。例如,如果您使用的是Anaconda,并且已更新路径,which python指向path/to/anaconda/bin/pythonsudo which python仍会指向usr/bin/python

很明显sudo python twistedTester.py找不到扭曲的模块。要解决这个问题,你应该明确地将路径传递给anaconda python。像这样:

sudo path/to/anaconda/bin/python twistedTester.py

答案 6 :(得分:0)

类似Twisted的外观可能已从当前版本中删除了twisted.internet模块。固定在the version required by scrapy (17.9.0)上对我有用:

$ pip install twisted==17.9.0

检查是否已安装:

$ python -c "import twisted.internet; print(twisted.internet)"
<module 'twisted.internet' from '/Users/username/dev/env/redacted-ewmlD2h2/lib/python3.7/site-packages/twisted/internet/__init__.py'>