部署子目录源码的Python Function App遇模块依赖问题
解决方案
针对你遇到的Azure Function App启动时找不到dotenv模块的问题,可通过以下步骤排查解决:
确保激活项目虚拟环境后再启动Function
先回到项目根目录激活虚拟环境:# Linux/macOS source venv/bin/activate # Windows venv\Scripts\activate激活后再进入
./backend/entrypoints/my-func目录执行func start。如果未激活虚拟环境,func可能调用系统Python,无法识别已安装在项目虚拟环境中的依赖。让Function目录识别根目录的requirements.txt
Azure Functions工具会优先检查Function所在目录的requirements.txt。可以在my-func目录下创建指向根目录依赖文件的软链接:# Linux/macOS ln -s ../../../requirements.txt requirements.txt # Windows(用mklink) mklink requirements.txt ..\..\..\requirements.txt或者直接复制根目录的
requirements.txt到my-func目录下。调整Python路径确保backend根目录被加载
在Function的入口文件(如函数的__init__.py)开头添加代码,将backend目录加入Python搜索路径:import sys from pathlib import Path # 获取backend目录的绝对路径 backend_root = Path(__file__).parent.parent.parent sys.path.append(str(backend_root))这不仅能解决domain等模块的导入问题,也能确保虚拟环境中的依赖被正确识别。
验证func工具与虚拟环境Python版本一致
执行以下命令确认版本匹配:func --version python --version如果
func使用的Python版本和虚拟环境不一致,会导致依赖无法找到。若版本不匹配,需调整func的Python环境指向项目虚拟环境。重新安装依赖到虚拟环境
清理现有依赖后重新安装,确保依赖完全安装到当前虚拟环境:pip uninstall -y python-dotenv pip install -r requirements.txt
内容的提问来源于stack exchange,提问作者Greg B
相关产品推荐
相关产品推荐

