【问题标题】:Issue on running Twisted on AWS在 AWS 上运行 Twisted 的问题
【发布时间】:2015-02-14 09:07:52
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我不确定是否有多个 Python 版本,但是当我使用 python -V 命令检查它时,它只显示了一个版本。关于c-binding库,你能告诉那个包的名字吗?
    • 在安装 zope.interface 库后,您是否尝试重新安装 twisted?
    【解决方案2】:

    在 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,然后重新安装twis​​tedpip install twisted

    可能的解决方案

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

    例如,您可以使用 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 上运行时遇到了类似的问题。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 2016-12-28
      相关资源
      最近更新 更多