1

我在 python 中有一个无服务器代码。我正在使用 serverless-python-requirements:^4.3.0 将其部署到 AWS lambda 中。我的代码在与其自身相同的目录中导入另一个 python 文件,这会引发错误。

无服务器.yml:

functions:
  hello:
    handler: functions/pleasework.handle_event
    memorySize: 128
    tags:
      Name: HelloWorld
      Environment: Ops
    package:
      include:
        - functions/pleasework
        - functions/__init__.py
        - functions/config

(venv) ➜  functions git:(master) ✗ ls
__init__.py             boto_client_provider.py config.py               handler.py              sns_publish.py
__pycache__             cloudtrail_handler.py   glue_handler.py         pleasework.py

如您所见,pleasework.py 和 config 在同一个文件夹中,但是当我在 pleasework 中导入配置时出现错误:

{
  "errorMessage": "Unable to import module 'functions/pleasework': No module named 'config'",
  "errorType": "Runtime.ImportModuleError"
}

我为此苦苦挣扎了几天,并认为我缺少一些基本的东西。

import boto3
import config


def handle_event(event, context):
    print('lol: ')
4

2 回答 2

2

好的,所以我发现了我的问题。我导入文件的方式是错误的,而不是

import config

我应该做

import functions.config
于 2019-07-10T17:30:35.600 回答
0

@Pranay Sharma 的回答对我有用。

另一种方法是创建 PYTHONPATH 环境变量并将其设置为处理程序函数和配置所在的目录。

在 Lambda 控制台中设置环境变量

  1. 打开 Lambda 控制台的函数页面
  2. 选择一个功能。
  3. 在环境变量下,选择编辑。
  4. 选择添加环境变量。
  5. 输入键和值。

在我们的例子中,键是“PYTHONPATH”,值是“函数”

于 2020-11-26T15:02:24.090 回答