1

我正在尝试导入我创建的自定义模块,但它破坏了我的 API 只是为了导入它。

数据目录:

-src
--order
----__init__.py
----app.py
----validator.py
----requirments.txt
--__init__.py

在我的 app.py 我有这个代码:

import json
from .validator import validate

def handler(event, context):
    msg = ''
    if event['httpMethod'] == 'GET':
        msg = "GET"
    elif event['httpMethod'] == 'POST':
        pass    #msg = validate(json.loads(event['body']))

    return {
        "statusCode": 200,
        "body": json.dumps({
            "message": msg,
        }),
    }

我收到此错误:

无法导入模块“app”:尝试使用没有已知父包的相对导入

但是,如果我from .validator import validate从我的代码中删除第 2 行 ( ),它可以正常工作,所以问题在于import,老实说,我不知道发生了什么。我尝试使用以下方式导入:

from src.order.validator import validate

但它也不起作用。

4

2 回答 2

2

能够通过以下命令生成构建来解决我的问题:sam build,然后压缩我的文件,并将其放在 aws-sam 内的根文件夹中,这不是一个很好的解决方案,因为我必须在每一个小的更改时重新构建,但是至少现在是一种解决方法

于 2021-06-08T03:40:50.930 回答
0

它似乎app.py还没有作为包层次结构的一部分被加载(即srcorder包还没有被加载)。你应该能够运行

from src.order import app

从的父目录中src,您的代码将起作用。如果您python app.py从终端运行——我假设这是你所做的——app.py将作为独立脚本运行——而不是作为包的一部分。

但是,我不相信你需要.validator在你的情况下,因为两个模块都在同一个目录中。你应该能够做到

from validator import validate
于 2021-06-07T14:48:41.893 回答