Azure Function Core Tools v3无法关联Conda环境导致本地运行失败
Azure Function v3 本地调试无法识别Conda环境的解决方法
问题根因
Azure Function Core Tools v3在Windows平台启动时,默认优先调用系统全局的Python Launcher(py命令)探测解释器版本,不会自动读取当前终端激活的Conda环境的解释器路径。因此即使终端已经显示激活了myenv环境,工具实际加载的还是全局安装的Python 3.8.0,Conda环境内安装的azure.identity等业务依赖自然无法被加载,抛出模块找不到的错误。
操作步骤
- 确认Conda环境的Python解释器绝对路径
激活myenv环境后,在终端执行where python,返回结果中第一行包含myenv路径的python.exe就是目标解释器,比如路径格式类似C:\Users\XXX\miniconda3\envs\myenv\python.exe,复制该路径备用。 - 给函数项目显式指定Python解释器路径
打开项目根目录下的local.settings.json文件(不存在就新建),在Values节点下添加指定解释器路径的配置,参考如下:
注意路径中的反斜杠需要写两个做转义,替换成你刚才复制的实际路径即可。{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PYTHON_ISOLATE_WORKER_DEPENDENCIES": "0", "languageWorkers:python:pythonPath": "C:\\Users\\XXX\\miniconda3\\envs\\myenv\\python.exe" } } - 清缓存重启服务
关闭所有之前运行的func进程,在项目目录执行func sync同步环境配置,完成后再执行func start启动。此时启动日志中显示的Python版本会是Conda环境内的3.8.13,之前的模块缺失报错会消失。
兜底校验
要是上面操作完还是识别不对Python版本,直接检查系统环境变量PATH的排序,把myenv的路径、对应Conda的Scripts路径挪到全局Python、py launcher路径的最前面,新开个终端重新激活环境启动就行。
内容的提问来源于stack exchange,提问作者Stijn Koordijk
相关产品推荐
相关产品推荐

