【发布时间】:2019-12-16 20:13:19
【问题描述】:
在尝试在本地运行我的天蓝色函数时,我在 VS 代码中遇到了一些与 python 设置不一致的问题。我试图避免使用 VS 代码为 azure 函数项目自动设置的“venv”环境,而是使用我制作并安装了所有要求的预先创建的 conda 环境。澄清一下,这是关于本地部署和不是天蓝色的门户。
myfunc__init__.py:
import json
import logging
import time
import azure.functions as func
import pandas as pd # Import Error happens here!
def main(req: func.HttpRequest) -> func.HttpResponse:
...
.vscode\Settings.json:
{
// Local Machine Conda VENV (Define CONDAPATH in Windows Environment)
"python.condaPath": "%CONDAPATH%",
"python.pythonPath": "%CONDAPATH%\\envs\\azure\\python.exe",
"azureFunctions.pythonVenv": "%CONDAPATH%\\envs\\azure",
// Created Local VENV by VS Code (pythonPath is difference for MAC vs Windows)
//"azureFunctions.pythonVenv": ".venv",
// Azure Function Stuff
"azureFunctions.deploySubpath": ".",
"azureFunctions.scmDoBuildDuringDeployment": true,
"azureFunctions.projectLanguage": "Python",
"azureFunctions.projectRuntime": "~2",
"azureFunctions.preDeployTask": "func: pack --build-native-deps",
"debug.internalConsoleOptions": "neverOpen",
}
注意:如果我将 %CONDAPATH% 替换为 conda 的实际绝对路径,问题仍然存在。
以防万一,launch.json配置如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Linux_PyFunc",
"type": "python",
"request": "attach",
"port": 9091,
"preLaunchTask": "func: host start"
}
]
}
当 VS Code 运行函数时,部署完成没有问题并生成本地链接。一旦我通过Postman 调用该函数,返回是HTTP 500 状态,这是由于找不到错误模块而无法import pandas。
如果我在settings.json 中设置"azureFunctions.pythonVenv": ".venv",函数会在本地部署,一旦触发/调用,它就会返回HTTP 200 状态和正确响应。
那么,这给我带来了一个问题,如果 VS 代码支持用于 azure 功能部署的 conda 环境,如果支持,我在这里缺少什么?
【问题讨论】:
-
为了确保我正确理解了这个问题,你是说这个带有 VS Code 和 Azure Functions 的 Conda 在本地可以正常工作吗?但是在部署到 Azure 时会得到 HTTP 500?或者它在本地也不起作用?
-
这是关于使用我的 conda env 进行本地部署的。由于处理了 python 设置,因此我没有遇到 azure 门户的问题。
-
萌:你找到答案了吗?我正面临着确切的问题。无法引导“launch.json”文件指向 conda。
-
Rakesh,事情变得有点复杂,因为我们有一些团队成员在 Mac 上,一些在 Windows 上。所以,我们不得不做出调整。请参阅下面发布的我当前的 vscode 作为答案。
标签: python azure visual-studio-code azure-functions