16

我安装了运行良好的 python 2.7.5。

然后我安装了scrapy(我认为它在内部使用了twisted)。我的scrapy spider也运行良好。

我安装了扭曲:

sudo apt-get install python-twisted

然后,我使用此处显示的 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 安装拾取?

4

7 回答 7

17

如果您使用pip ,请尝试:

pip install twisted

w3lib 和 lxml 也是如此。

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

sudo -H pip install twisted
于 2014-11-07T04:11:33.973 回答
9

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

所以,我不得不下载一个 tar 球并从他们那里安装包。

我从这里下载了 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 的包。所以,我从这里下载了 zope.interface 的 tar 球。然后,运行这个命令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 即可。

于 2013-07-04T22:34:19.727 回答
7

请将文件twisted.py重命名为其他名称。每当您从文件中导入函数时,解释器都会在当前位置搜索文件,然后在库中搜索。所以如果你有任何名为“ twisted.py ”的文件,你应该重命名它。

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

于 2016-06-14T15:30:51.463 回答
1

它也发生在我身上。最后我发现有一个名为twisted.py我当前工作目录的文件。我删除了twisted.pytwisted.pyc. 问题已解决。

于 2016-03-31T06:08:06.343 回答
1

看起来 Twisted 可能已经twisted.internet从当前版本中删除了该模块。固定(17.9.0)所需的版本scrapy对我有用:

$ 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'>
于 2020-01-05T00:54:37.543 回答
0

我想出了为什么apt-get install python-twisted还不够或“正确安装”,正如您所说,user1700184。

我使用 Debian Wheezy 和 Python 2.7。

我只需要将名为“twisted”的文件夹从移动/usr/lib/python2.7/dist-packages//usr/lib/python2.7/

必须对包“zope”和您安装但在尝试运行代码时未检索到的任何其他包执行相同操作。

但是,为什么在我的情况下这甚至是必要的仍然是一个谜,因为我的sys.path确实包括/usr/lib/python2.7/and /usr/lib/python2.7/dist-packages,所以dist-packages解释器应该检索到下面的任何内容。

于 2014-08-05T13:11:04.090 回答
0

我认为值得注意的是,如果您使用 sudo 启动 python,那么您使用的是原始默认系统 python。这不是PATH指向的蟒蛇。例如,如果您使用 Anaconda 并且您已经更新了which python指向的路径path/to/anaconda/bin/pythonsudo which python但仍将指向usr/bin/python

所以显然sudo python twistedTester.py不会找到twisted模块。要解决这个问题,您应该明确地将路径传递给 anaconda python。像这样:

sudo path/to/anaconda/bin/python twistedTester.py
于 2017-12-02T22:38:09.807 回答