繁体   English   中英

使用 aws sam 时有没有办法修复 pythonpath?

[英]Is there a way to fix the pythonpath when using aws sam?

我正在尝试导入我创建的自定义模块,但它破坏了我的 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”:尝试在没有已知父 package 的情况下进行相对导入

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

from src.order.validator import validate

但它也不起作用。

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

似乎app.py尚未作为 package 层次结构的一部分加载(即尚未加载srcorder包)。 你应该能够运行

from src.order import app

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

但是,我认为您不需要.validator ,因为两个模块都在同一个目录中。 你应该能够做到

from validator import validate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM