Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AWS上运行Twisted的问题_Python_Amazon Web Services_Twisted_Zope.interface - Fatal编程技术网

Python AWS上运行Twisted的问题

Python AWS上运行Twisted的问题,python,amazon-web-services,twisted,zope.interface,Python,Amazon Web Services,Twisted,Zope.interface,首先,我需要在我的服务器上运行twisted应用程序,但我得到的是这个错误 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, i

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

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.

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

您正在使用哪个linux发行版/AMI? 您是否检查过是否安装了多个python版本?
也许zope.interface需要c-binding库,您最好在ec2上从apt get/yum?

安装此软件包

如果您看到此消息,则表示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,然后确保python站点包目录中没有zope.interface内容,然后再使用
pip安装zope.interface
进行安装

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

可能的解决方案

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

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

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上运行twisted时,我遇到了类似的问题

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


目前的版本是zope.interface-4.1.3.tar.gz

我不确定是否有多个Python版本,但是当我使用Python-V命令检查它时,它只显示了一个版本。关于c-binding库,您能告诉我该包的名称吗?在安装zope.interface库之后,您是否尝试重新安装twisted?
virtualenv -p /usr/bin/python2.7 venv