AWS Lambda python 错误:Runtime.ImportModuleError:无法导入模块“app”:无法从“pyparsing”导入名称“operatorPrecedence”

Posted

技术标签:

【中文标题】AWS Lambda python 错误:Runtime.ImportModuleError:无法导入模块“app”:无法从“pyparsing”导入名称“operatorPrecedence”【英文标题】:AWS Lambda python Error: Runtime.ImportModuleError: Unable to import module 'app': cannot import name 'operatorPrecedence' from 'pyparsing' 【发布时间】: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 中包含的依赖项? 【参考方案1】:

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

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

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

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

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

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

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

https://alexharv074.github.io/2018/08/18/creating-a-zip-file-for-an-aws-lambda-python-function.html https://dev.to/razcodes/how-to-create-a-lambda-using-python-with-dependencies-4846

【讨论】:

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

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

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

注意:

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

【讨论】:

以上是关于AWS Lambda python 错误:Runtime.ImportModuleError:无法导入模块“app”:无法从“pyparsing”导入名称“operatorPrecedence”的主要内容,如果未能解决你的问题,请参考以下文章

返回空正文时来自python中AWS lambda的内部服务器错误

AWS Lambda python 错误:Runtime.ImportModuleError:无法导入模块“app”:无法从“pyparsing”导入名称“operatorPrecedence”

无法从 lambda 中的 python 连接到 aws redshift

适用于 postgreSQL 的 AWS Lambda 函数 NodeJs - 超时错误

AWS lambda 中的 Pandas 给出了 numpy 错误

AWS Lambda 错误:解压缩后的大小必须小于 262144000 字节