我想我正在尝试做一些非常简单的事情,但是一直遇到问题。
我正尝试部署一个使用两个Python文件__init__.py
和另一个名为handler.py
的Python函数。这是__init__.py
的全部:
import json
import logging
import azure.functions as func
import handler
def main(req: func.HttpRequest) -> func.HttpResponse:
result = handler.yourFunction(req.params, None)
return func.HttpResponse(result)
无论出于何种原因,每当我运行此函数时,我都会收到一条错误消息,指出找不到处理程序模块。我可以在Azure上查看文件夹结构,并发现它与__init__.py
在同一文件夹中。
我真的很困惑为什么这不起作用。我可以很好地部署Node.js函数,但Python一直会遇到问题。
答案 0 :(得分:1)
我发现这很好用
from . import mylibrary as mlib
这在某些地方也有帮助:
from . import mylibrary # pylint: disable=relative-beyond-top-level
from ..myfolder import mylibrary # pylint: disable=relative-beyond-top-level
此处禁用pylint警告,因为这是天蓝色的误报。
答案 1 :(得分:0)
使用Azue函数服务不能很好地支持python。
对于python模块查找机制,它将查找sys.path
中列出的模块。因此,如果要导入自己的模块。您需要在sys.path
中添加当前文件夹。在导入您自己的模块之前,请添加以下内容:
import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__))))
import handler
这在我的本地计算机上有效。
答案 2 :(得分:0)
此文档分为几种模式,可用于导入共享代码:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python#folder-structure
我个人发现import ..SharedCode/myHander
的运气很好