![](/img/trans.png)
[英]Creating a Hello World application using AWS SAM : issue when running "sam build"
[英]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 层次结构的一部分加载(即尚未加载src
和order
包)。 你应该能够运行
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.