python Azure http触发器函数对从其他文件夹导入的模块抛出错误

bvuwiixz  于 2023-02-18  发布在  Python
关注(0)|答案(1)|浏览(119)

我们正在使用Azure函数构建http触发器。

import logging

import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
    else:
        return func.HttpResponse(
             "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
             status_code=200
        )

从线上平台,我们可以通过添加参数来触发它,并在屏幕上打印出来。
一旦我们尝试从src文件夹导入文件,该文件夹与HttpTrigger1处于同一级别,

import src.main

我们有以下错误:
load_function. Sys路径出错:【'C:\用户\阿里迈迪\应用数据\漫游\npm\节点模块\Azure功能核心工具\bin\worker\python\3.10\WINDOWS\X64',
它指出main.py,我们已经加载了一个名为load_toml的库。同样,在www.example.com中main.py从src文件夹导入。

所以它在每个模块上抛出相同的错误。
我们确实检查了文件,特别是以下部分:
当使用绝对导入语法时,shared_code/文件夹需要包含一个init.py文件,以将其标记为Python包。
我们仍然不知道该怎么做。你知道如何将其他模块导入到Azure http触发器函数中吗?

qaxu7uf2

qaxu7uf21#

在我之前的一个workarounds中,我在srclike文件夹中创建了一个Python文件,该文件夹与Azure Functions Python项目中的HttpTriggerFunction Folder级别处于同一级别。

from calcfunction import  calc

这是我在Http触发器函数中使用的绝对路径:

绝对路径很适合用于上述场景,例如将模块作为Python包导入到其他文件中。
请参考用户@HassanAbbas 提供的SO #58318794上的类似场景。

相关问题