【问题标题】:AWS Lambda python Error: Runtime.ImportModuleError: Unable to import module 'app': cannot import name 'operatorPrecedence' from 'pyparsing'AWS Lambda python 错误:Runtime.ImportModuleError:无法导入模块“app”:无法从“pyparsing”导入名称“operatorPrecedence”
【发布时间】:2022-01-23 21:39:03
【问题描述】:

我刚刚重新部署了我的 AWS Lambda,却意外遇到了一个问题:

[ERROR] 
Runtime.ImportModuleError: Unable to import module 'app': cannot import name 'operatorPrecedence' from 'pyparsing' 
(/opt/python/pyparsing/__init__.py)
(/var/task/pyparsing/__init__.py)

我该如何解决这个问题?

【问题讨论】:

  • 您能否添加有关您正在部署的代码的更多详细信息——例如文件夹结构和您在 zip 中包含的依赖项?

标签: python python-3.x amazon-web-services aws-lambda aws-lambda-layers


【解决方案1】:

我看到a release note这个功能在 pyparsing 的第 3 版中已停用:

operatorPrecedence infixNotation 的同义词 - 转换为调用 中缀符号

因此,您可能包含的 pyparsing 版本可能与您之前使用的不同 - 一个不包含 operatorPrecedence 功能的版本,因此请仔细检查您所包含的 pyparsing 版本。

This Knowledge Center article 概述了最常见的问题:

当您的 Lambda 环境无法正常运行时,您通常会收到此错误 在 Python 代码中找到指定的库。这是因为 Lambda 并非所有 Python 库都预打包。

要解决此错误,请创建部署包或 Lambda 层 包括您要在 Python 代码中使用的库 对于 Lambda。

如果您想直接在代码包中包含依赖项,这里还有几个不使用层的示例:

【讨论】:

  • 感谢@shawn 清楚地解释了这个问题?
【解决方案2】:

基本上,我通过以下步骤解决此问题:

  • 制作虚拟环境
  • 手动添加所需的包/库
  • 通过python3 -m pip freeze > requirements.txt准备 requirements.txt
  • 部署您的代码

注意:

  • 完成上述步骤后,如果您仍然遇到同样的问题,
  • 然后使用 pyparsing==2.4.7 代替 pyparsing==3.0.6 或更新版本

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多