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

Azure Function导入共享代码失败求助:无法导入identity_utils模块

解决Azure Functions中共享代码的导入问题

问题回顾

目录结构如下:

azure_functions/
| shared/
| | __init__.py
| | identity_utils.py
| function1/
| | __init__.py
| | function.json
| host.json
| requirements.txt

尝试多种导入方式均失败,仅将get_credential()函数直接放入shared/__init__.py中才能正常导入,但这种方式破坏了共享代码的组织结构。

解决方案

方法1:手动添加项目根目录到Python模块搜索路径

在function1/__init__.py的最顶部添加以下代码,将azure_functions根目录加入Python的模块搜索路径:

import sys
from pathlib import Path

# 获取当前文件的父目录的父目录(即项目根目录azure_functions)
sys.path.append(str(Path(__file__).parent.parent))

添加完成后,即可使用正常的绝对导入语句:

from shared.identity_utils import get_credential

方法2:通过环境变量配置模块路径(可选)

  • 本地开发时:
    Windows(PowerShell):
    $env:PYTHONPATH = "你的azure_functions目录绝对路径"
    
    Linux/macOS:
    export PYTHONPATH="你的azure_functions目录绝对路径"
    
  • 部署到Azure后:
    在函数应用的配置页面添加应用设置PYTHONPATH,值设为/home/site/wwwroot(Azure会将整个项目目录部署到该路径下)。

原理解释

  1. 绝对导入失效原因:默认情况下,Python的模块搜索路径不包含azure_functions根目录,因此无法识别shared模块。
  2. 相对导入失效原因:Azure Functions的执行上下文会将每个函数目录(如function1)作为顶级模块运行,相对导入的上层目录不在模块搜索范围内,导致解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:00:01