You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure HTTP Trigger函数导入同级src目录模块时出现加载错误求助

在Azure HTTP Trigger函数中正确导入同级模块的解决方案

问题场景

我们使用Azure Functions构建HTTP Trigger函数,基础代码如下:

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
        )

该函数在线上平台可正常触发,但尝试导入与HttpTrigger1同级的src目录下模块(如import src.main)时,出现如下错误:

Error in load_function. Sys Path:
['C:\Users\AliMehdy\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\workers\python\3.10\WINDOWS\X64',

错误指向main.py中加载的load_toml库,且src目录内所有导入语句都会触发同类错误。已查阅微软官方文档关于导入行为的说明(提到绝对导入时shared_code目录需包含__init__.py标记为Python包),但仍未解决问题。


解决步骤

1. 规范项目目录结构

首先确保项目结构符合Azure Functions的Python包规范,示例结构如下:

YourFunctionApp/
├── HttpTrigger1/
│   ├── __init__.py
│   └── function.json
├── src/
│   ├── __init__.py  # 必须添加此文件,标记src为Python包
│   └── main.py
└── requirements.txt
  • src目录必须包含空的__init__.py文件,否则Python无法将其识别为可导入的包。

2. 选择合适的导入方式

方式一:相对导入

在HttpTrigger1/__init__.py中使用相对导入语法,直接引用同级的src包:

from ..src import main

注意:相对导入仅适用于包内结构,确保函数应用整体被当作Python包处理。

方式二:手动添加项目根目录到搜索路径

如果相对导入不生效,可在函数的__init__.py开头添加代码,将项目根目录加入Python的sys.path:

import sys
import os

# 将当前函数目录的父目录(项目根目录)添加到搜索路径
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

# 之后即可正常导入src模块
import src.main

这段代码会动态修正Python的模块搜索路径,确保能找到src包。

3. 保证本地调试与部署的一致性

  • 本地使用Azure Functions Core Tools调试时,必须在项目根目录执行启动命令,避免路径上下文错误。
  • 部署到Azure时,只要目录结构正确且__init__.py存在,函数运行时会自动识别项目根目录的包结构,无需额外调整路径。

4. 排查依赖问题

如果错误涉及load_toml,检查requirements.txt是否包含相关依赖:

azure-functions>=1.17.0
toml>=0.10.2

执行pip install -r requirements.txt安装依赖后再测试。


内容的提问来源于stack exchange,提问作者alim1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:21:01