部署使用多个python文件的Python函数

时间:2019-09-15 08:57:14

标签: python azure azure-functions

我想我正在尝试做一些非常简单的事情,但是一直遇到问题。

我正尝试部署一个使用两个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一直会遇到问题。

3 个答案:

答案 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的运气很好