在 VSC 中将本地 Azure 函数部署到 Azure 时,我收到“未找到 HTTP 触发器”的消息。 Azure 消费按量付费计划,配置中 Python 版本设置为 3.10。
部署输出显示在 Azure 中安装 Python 3.10.4,但解释器设置为 Python 3.10.15/venv。 激活 venv 后,在本地运行该函数会显示找到 3.10.15 并返回本地 url,没有错误。 就好像 Azure 没有考虑解释器或 pyenv.cfg 中的路径,而是以某种方式使用 3.10.4,从而导致版本不匹配。
pyenv.cfg 最初是自动加载的,其主路径为 /usr/bin,而不是 venv 环境中的 /home/gv/venv/bin,后来我手动更改了该路径。 不确定使用哪个以及为什么 /home/gv/venv/bin 没有加载,但似乎一个更有意义。
早期测试运行包括“检测到以下平台:python:3.10.4 未安装平台‘python’的版本‘3.10.4’。生成脚本来安装它”;手动路径切换到 venv 后就消失了;但仍然与 3.10.15 不匹配。
调试默认的 function_ap.py 文件本身或运行附加到本地函数的文件没有问题,并且在本地运行该函数可以正常工作,返回预期的消息。
requirements.txt 通过 freeze >requirements.txt 有依赖关系;在本地运行期间这些没有问题。
这是使用 Python 编程模型 V2 的 WSL/Ubuntu 24.04.1,未更改默认格式。 我使用 deadsnakes、update-alternatives 等来允许安装 3.10.15 并将其设置为 Ubuntu 默认值,而不是 Ubuntu 附带的 3.12。 pip 24.3.1 已安装在 venv 中。
在 venv 中安装 Azure 模块:
- azure-functions-core-tools-4
- 天蓝色功能
- 天蓝色存储 blob
- 天蓝色身份
非常感谢。
部署输出调试本地附加函数pyenv.cfgfunction_app.py文件settings.jsonlocal.settings.jsonhost.jsonrequirements.txt
听起来您遇到了一些与Python环境和Azure Function部署相关的问题。让我们分解问题并逐步解决每个部分。
Azure Functions 可能并不总是遵循虚拟环境中指定的确切版本。 Azure Functions 通常使用其可用的版本,在您的情况下为 3.10.4。为了确保一致性,您应该尽可能地调整本地和 Azure 环境。
pyenv.cfg
文件应正确指向您的虚拟环境。如果您的虚拟环境位于主路径,则主路径应为 /home/gv/venv/bin
。
确保您的部署过程已正确配置为使用虚拟环境和正确的 Python 版本。
确保您的虚拟环境设置正确并且Python版本符合预期。
# Activate the virtual environment
source /home/gv/venv/bin/activate
# Verify the Python version
python --version
pyenv.cfg
确保
pyenv.cfg
文件指向正确的虚拟环境路径。
home = /home/gv/venv/bin
include-system-site-packages = false
version = 3.10.15
在 Azure 门户中,转到 Function App 设置并验证 Python 版本。应设置为 3.10。
requirements.txt
确保您的
requirements.txt
是最新的并包含所有必要的依赖项。
pip freeze > requirements.txt
使用 Azure CLI 部署函数应用。这可确保部署过程一致并尊重您的虚拟环境。
# Login to Azure
az login
# Deploy the function app
func azure functionapp publish <FunctionAppName> --build-native-deps
部署后,检查日志以确保不存在与Python版本或依赖项相关的错误。
# View deployment logs
az webapp log tail --name <FunctionAppName> --resource-group <ResourceGroupName>
确保您的函数触发器在您的
function.json
文件中正确定义。
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "anonymous",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
requirements.txt
中。requirements.txt
azure-functions
azure-storage-blob
azure-identity
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<YourStorageConnectionString>",
"FUNCTIONS_WORKER_RUNTIME": "python"
}
}
通过执行这些步骤,您应该能够解决问题并成功部署 Azure Function。如果您仍然遇到问题,请提供有关您在部署过程中看到的特定错误或日志的更多详细信息。