【问题标题】:AWS Lambda -- Unable to import srsly.ujson.ujson for SpaCyAWS Lambda -- 无法为 SpaCy 导入 srsly.ujson.ujson
【发布时间】:2019-12-05 05:08:51
【问题描述】:

我正在尝试将 SpaCy 作为依赖项添加到我的 Python Lambda。我通过使用pip3 install spacy --no-deps -t . 将SpaCy 作为独立依赖项安装在名为dependencies 的目录中来做到这一点,这是因为我无法在我的Lambda 的\tmp 目录中加载整个Spacy 依赖项。

我能够成功地将文件夹上传到 s3 并在 Lambda 调用期间下载它。当我尝试import spacy 时,我收到此错误:[ERROR] Runtime.ImportModuleError: Unable to import module : No module named 'srsly.ujson.ujson'

我在dependencies\ 中手动安装了srsly,并且我拥有按照this link 列出的所有文件。这是由this link 引用的。其中一个回复说,“似乎 Python 无法加载它,因为它没有被编译?”。如何编译包含.c 文件的依赖项?

我在 SO 上发现的另一个问题是 this question,但我已经手动安装了 srsly。如何导入模块?谢谢。


在导入 spacy 之前,我手动检查我的代码是否存在 ujson

if os.path.exists('/tmp/dependencies/srsly/ujson/ujson.c'):
    print('ujson exists')

并且打印语句被打印出来。

【问题讨论】:

  • 您使用的是什么版本的 spacy?你在哪里运行 pip install ?我面临着类似的问题,我认为问题在于我在我的机器上运行 pip install ,但是 lambda 运行时使用 aws linux 并且在我的机器上编译的 C 依赖项在那里不起作用。
  • @AlexeySmirnov 我在 /tmp/python 的文件夹中运行 pip install 作为 pip3 install spacy --no-deps -t . 。是的,我认为问题也可能出在 python3.6 与 python3.7 之间。
  • 如果您在本地机器上运行 pip install,然后压缩依赖项,然后上传供 lambda 使用,这意味着某些二进制文件是使用您的 OS 编译器编译的,这与 lambda 运行时 os - amazonlinux

标签: python amazon-web-services aws-lambda spacy ujson


【解决方案1】:

这有点奇怪,但我对这个问题的解决方案是在 srsly 文件夹中创建一个附加的“ujson”文件夹,然后将所有 ujson 生成的代码移动到之前创建的文件夹“ujson”

【讨论】:

    【解决方案2】:

    对我来说,pip 卸载和安装 srsly 再次正常工作。有时它只是与您的 python 版本的兼容性问题,因此请确保存在正确的 python/srsly 版本

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 2019-12-23
      • 2018-01-01
      • 1970-01-01
      相关资源
      最近更新 更多