在AWS上运行Twisted的问题

时间:2015-02-14 09:07:53

标签: python amazon-web-services twisted zope.interface

首先,我需要在我的服务器上运行扭曲的应用程序,但我得到的是此错误

File "server2.py", line 1, in <module>
from twisted.internet.protocol import Factory, Protocol
File "/usr/lib64/python2.6/site-packages/Twisted-15.0.0-py2.6-linux-x86_64.egg/twisted/__init__.py", line 53, in <module>
_checkRequirements()
File "/usr/lib64/python2.6/site-packages/Twisted-15.0.0-py2.6-linux-x86_64.egg/twisted/__init__.py", line 51, in _checkRequirements
raise ImportError(required + ".")
ImportError: Twisted requires zope.interface 3.6.0 or later.

所以,这导致我安装了zope.interface。在zope.interface-4.1.2中运行setup.py之后,我看到了这个

Finished processing dependencies for zope.interface==4.1.2

我想我已经更新了它,但是当我运行扭曲的应用程序时,出现了同样的错误。请帮帮我。

2 个答案:

答案 0 :(得分:1)

您使用的是哪个Linux发行版/ AMI? 你检查过你是否安装了多个python版本? 也许zope.interface需要c-binding库,你最好从apt-get / yum安装这个包吗?

答案 1 :(得分:0)

on ec2

如果您看到此消息,则表示zope.interface可用,但提出了一些可能无效的原因。

导入zope.interface的代码如下所示

# Don't allow the user to run with a version of zope.interface we don't
# support.
required = "Twisted requires zope.interface %s or later" % (required,)
try:
    from zope import interface
except ImportError:
    # It isn't installed.
    raise ImportError(required + ": no module named zope.interface.")
except:
    # It is installed but not compatible with this version of Python.
    raise ImportError(required + ".")

重新安装相同版本的zope.interface可能无法解决问题,但可能值得一试。首先卸载zope.interface,然后在安装pip install zope.interface之前确保python site-packages目录中没有zope.interface的东西。

提问者可以尝试替代版本的zope.interface,但我认为问题更可能与系统上安装python的方式有关,或者扭曲未正确安装。您可以尝试卸载pip uninstall twisted,然后重新安装扭曲的pip install twisted

可能的解决方案

解决问题的最简单方法是在虚拟环境中运行应用程序并控制安装哪些软件包。请参阅此处的文档:https://virtualenv.pypa.io/en/latest/

例如,您可以使用pip安装venv,然后将其安装到其中

pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install twisted
deactivate

您可以尝试使用与此类

之类的系统默认值不同的python版本
virtualenv -p /usr/bin/python2.7 venv

AWS Lambda

当我试图在aws lambda上运行时,我遇到了类似的问题。

我发现在venv中使用pip安装时无法导入zope.interface。看起来有些东西丢失了,这意味着它无法正常导入作为我的zip包中的模块,但可能在venv中工作。从站点包中删除它并将其替换为源文件解决了我的问题。

https://pypi.python.org/pypi/zope.interface/4.1.3#downloads

此时的当前版本是zope.interface-4.1.3.tar.gz