我一直在尝试使用 python 3.9 通过 AWS Lambda 运行一些代码,但在运行代码时不断遇到问题。我不断收到“没有名为 'regex._regex' 的模块”错误。 几天前,我在通过 PyCharm 在本地工作时遇到了这个问题,但我想通过安装更新版本的正则表达式来解决这个问题(老实说,我不记得到底是什么解决了这个问题,花了一整天的时间来尝试解决这个问题) 。 但现在它可以在 PyCharm 上运行,我还在 VSCode 上测试了我的代码,它也可以正常运行,没有任何问题 但由于某种原因,每次我将文件复制到 AWS Lambda 来运行它时,我都会再次收到错误。 我环顾四周,发现其他人不久前也遇到过这个错误,但他们没有找到任何解决方案,而且没有一个对我有用。
具体来说,我正在导入 python- binance 模块,在该模块中,它尝试导入正则表达式,这会成功地在正则表达式文件周围弹跳几个级别,导入其他正则表达式文件,直到它无法读取特定的“_regex”文件。 _regex 文件是一个 python 文件,所以可能与它有关,但它通过 PyCharm 和 VSCode 工作,所以我不知道它在 Lambda 中会有什么不同。 我通常通过 pip 安装正则表达式文件(pip install regex),并且与我的 python 脚本位于同一位置(pip install -t MyFile regex)。安装它们后,除了它们最初进入的文件夹之外,它们不会嵌套在任何其他文件夹中。
需要明确的是,我有一个本地文件夹,我在其中编写代码并将包导入到其中,然后将其压缩并然后上传到lambda 我已经取出了那部分代码,并取出了 python-binance 的导入(指的是导入正则表达式,因此导致了问题),并且我的所有其他包都工作正常,所以这不是我将包存储在目录。
我尝试将 lambda 运行的 Python 版本更改为 3.8 和 3.7 swell,但问题仍然存在。
错误:
{ "errorMessage": "无法导入模块 'lambda_function': 没有名为 'regex._regex' 的模块", "errorType": "运行时.ImportModuleError", "requestId": "c59ea163-53bf-4b1a-8cc5-a4d23283cf0f", “堆栈跟踪”: [] }
任何帮助将不胜感激。
错误“没有名为“regex._regex”的模块”通常表示的 AWS Lambda 环境中缺少“regex”包,或者它已损坏。虽然已在本地安装了它,但需要将其作为 Lambda 函数的一部分进行打包和部署。
以下是修复 Lambda 函数的步骤:
- 为的 Lambda 函数创建一个目录: 创建一个新目录来存储的 Lambda 函数代码及其所有依赖项。
- 在该目录中安装“regex”: 打开终端或命令提示符,导航到新创建的目录,并运行以下命令:
pip install --target . regex
这会将“regex”包及其依赖项安装到当前目录中。
-
将的 Lambda 函数代码移至该目录: 将包含的 Lambda 函数的 Python 脚本复制到此目录中。
-
打包的 Lambda 函数: 压缩目录的内容,包括“regex”包和的 Lambda 函数代码。可以使用以下命令从命令行执行此操作:
zip -r my_lambda_function.zip *
将“my_lambda_function.zip”替换为所需的压缩文件名。
-
将压缩文件上传到的 Lambda 函数: 在 AWS Lambda 控制台中,创建一个新的 Lambda 函数或更新现有函数。在“代码”部分,选择“从 .zip 文件上传”作为代码输入类型,并上传创建的 .zip 文件。
-
更新的 Lambda 函数运行时: 确保的 Lambda 函数使用与用来打包代码的 Python 版本相同的 Python 运行时(在本例中为 Python 3.9)。
-
保存更改并测试的 Lambda 函数: 保存对 Lambda 函数所做的更改。然后,使用测试事件测试的 Lambda 函数以验证它是否按预期工作。
通过执行这些步骤,将确保将“regex”包与其所有必需的依赖项一起打包并部署到的 Lambda 函数,从而防止出现“没有名为“regex._regex”的模块”错误。
标签:python,amazon-web-services,aws-lambda From: 70956626