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

Azure时间触发器函数__init__.py如何导入其他文件夹的类

Python Azure时间触发器函数自定义模块导入失败解决方案

报错根因

Azure Python函数默认的模块搜索路径仅覆盖host.json所在的函数应用根目录、Python环境依赖目录,单纯给子文件夹加__init__.py不会自动把自定义代码路径加入搜索范围;函数入口文件不属于可执行相对导入的包结构,因此两种导入写法都会报错。


可落地修复步骤

  • 校准目录结构
    确保所有文件按如下结构存放,host.json必须在最外层根目录,所有存放自定义代码的文件夹下都保留空的__init__.py文件:

    函数应用根目录/
    ├── host.json
    ├── local.settings.json
    ├── requirements.txt
    ├── Project/
    │   ├── __init__.py
    │   └── AWS/
    │       ├── __init__.py
    │       └── S3_uploader.py
    └── 你的时间触发器函数目录/
        ├── __init__.py  # 函数运行入口
        └── function.json
    

    注意:检查.funcignore文件,不要把Project目录加入忽略列表,否则本地调试或发布时会漏传自定义代码。

  • 修改入口文件导入逻辑
    打开时间触发器目录下的__init__.py,在所有自定义导入语句的最前面添加路径注册代码,彻底废弃相对导入写法(即带./..的导入语句,函数入口不支持该语法):

    import sys
    import os
    
    # 定位到host.json所在的根目录,加入Python模块搜索路径
    function_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
    sys.path.insert(0, function_root)
    
    # 再执行自定义模块导入
    from Project.AWS.S3_uploader import S3_Uploader
    
  • 调试&发布校验

    • 本地调试时终端必须切到host.json所在的根目录执行func start启动,不要在子目录下运行启动命令,否则路径识别会出错。
    • 发布到Azure云端时,确保Project整个目录和函数目录、配置文件一起上传到站点根目录,不要只上传触发器函数文件夹。
    • 自定义目录命名避开Python内置库、Azure SDK同名关键词(比如不要命名为azure/logging/os),避免模块冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:57:19