使用 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,
}),
}
我收到这个错误:
Unable to import module 'app': attempted relative import with no known parent package
但是,如果我从我的代码中删除第 2 行 (from .validator import validate
),它工作正常,所以问题出在 import
,老实说,我不知道发生了什么上。我尝试使用以下方式导入:
from src.order.validator import validate
但是也没用。
似乎 app.py
尚未加载为包层次结构的一部分(即 src
和 order
包尚未加载)。你应该能够 运行
from src.order import app
来自 src
的父目录,您的代码将起作用。如果你从终端 运行 python app.py
——我假设你所做的——app.py
将 运行 作为一个独立的脚本——而不是作为包的一部分。
但是,我认为您不需要 .validator
,因为这两个模块都在同一目录中。你应该可以做到
from validator import validate
能够通过以下命令生成构建来解决我的问题:sam build,压缩我的文件,并将其放在 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,
}),
}
我收到这个错误:
Unable to import module 'app': attempted relative import with no known parent package
但是,如果我从我的代码中删除第 2 行 (from .validator import validate
),它工作正常,所以问题出在 import
,老实说,我不知道发生了什么上。我尝试使用以下方式导入:
from src.order.validator import validate
但是也没用。
似乎 app.py
尚未加载为包层次结构的一部分(即 src
和 order
包尚未加载)。你应该能够 运行
from src.order import app
来自 src
的父目录,您的代码将起作用。如果你从终端 运行 python app.py
——我假设你所做的——app.py
将 运行 作为一个独立的脚本——而不是作为包的一部分。
但是,我认为您不需要 .validator
,因为这两个模块都在同一目录中。你应该可以做到
from validator import validate
能够通过以下命令生成构建来解决我的问题:sam build,压缩我的文件,并将其放在 aws-sam 内的根文件夹中,这不是一个很好的解决方案,因为我必须重建每一个小的改变,但至少它现在是一个解决方法