Lambda函数-如何跨多个文件拆分python代码

Lambda函数-如何跨多个文件拆分python代码,python,python-3.x,aws-lambda,Python,Python 3.x,Aws Lambda,问题 我试图将lambda函数的python代码分割到多个文件中,但是任何导入其他相关模块的尝试都会为顶级模块抛出错误 { "errorMessage": "Unable to import module 'download_ga_data'" } 我做错了什么?这感觉应该是超基本的 文件结构布局(从根目录显示) 下载的内容\u ga\u data.py # import unicodecsv as csv import os # import path from . import de

问题

我试图将lambda函数的python代码分割到多个文件中,但是任何导入其他相关模块的尝试都会为顶级模块抛出错误

{
  "errorMessage": "Unable to import module 'download_ga_data'"
}
我做错了什么?这感觉应该是超基本的

文件结构布局(从根目录显示)

下载的内容\u ga\u data.py

# import unicodecsv as csv
import os

# import path
from . import definitions
from analytics.google import GoogleAnalytics
from helpers.main import GoogleCloudStorageBucket

def lambda_handler(event, context):
    print("test")
这将抛出错误。如果我在操作系统之后注释掉这三个导入,那么它将正常工作

我应该如何正确导入这两个模块,我觉得我缺少了一些超基本的东西

环境注释


这一切都建立在下面的基础上,并直接上传到S3中。所有文件都是777以绕过任何权限错误。

确定最终解决了此问题。我得到的主要提示是将我的加载函数包装在一个try-except块中:

try:
    import definitions
    from analytics.google import GoogleAnalytics
    from cloud_helpers.main import GoogleCloudStorageBucket
except Exception as e:
    error = str(e)
    stacktrace = json.dumps(traceback.format_exc())
    message = "Exception: " + error + "  Stacktrace: " + stacktrace
    err = {"message": message}
    return respond(err)

def respond(err, res=None):
    return {
        "statusCode": "400" if err else "200",
        "body": err["message"] if err else json.dumps(res),
        "headers": {"Content-Type": "application/json"},
    }
这就暴露了以下错误(令人恼火的是,我只有一个屏幕截图):


然后通过切换到
导入定义

解决了这个问题,如果它是来自helpers.main import GoogleCloudStorageBucket?@maxymoo oop的
,这是原始问题中的错误类型。固定的。
try:
    import definitions
    from analytics.google import GoogleAnalytics
    from cloud_helpers.main import GoogleCloudStorageBucket
except Exception as e:
    error = str(e)
    stacktrace = json.dumps(traceback.format_exc())
    message = "Exception: " + error + "  Stacktrace: " + stacktrace
    err = {"message": message}
    return respond(err)

def respond(err, res=None):
    return {
        "statusCode": "400" if err else "200",
        "body": err["message"] if err else json.dumps(res),
        "headers": {"Content-Type": "application/json"},
    }