Microsoft.Azure.WebJobs.Script: Architecture Arm64不支持python语



我的笔记本电脑是MacBook Pro(16英寸,2021)Apple M1 Max。

我想用Python运行Azure函数。

目前,Azure函数核心工具不支持在ARM64设备上开发Python函数。要在带有M1芯片的Mac上开发Python函数,必须在模拟的x86环境中运行。要了解更多信息,请参阅ARM64上的x86仿真.

我已经按照指示去做了。

安装Azure功能核心工具

到目前为止,我做了:

  1. 安装自制程序

  2. 使用Rosetta打开终端。

  3. 也可以在Visual Studio Code中启用仿真

  4. setting.json

"azureFunctions.deploySubpath": ".",
"azureFunctions.scmDoBuildDuringDeployment": true,
"azureFunctions.pythonVenv": ".venv",
"azureFunctions.projectLanguage": "Python",
"azureFunctions.projectRuntime": "~4",
"debug.internalConsoleOptions": "neverOpen",
"terminal.integrated.profiles.osx": {
"rosetta": {
"path": "arch",
"args": ["-x86_64", "zsh", "-l"],
"overrideName": true
}
}
}
  1. 我有。zshrc文件在根文件夹,我的项目位于
# rosetta terminal setup
if [ $(arch) = "i386" ]; then
alias python="/usr/local/bin/python3"
alias brew86='/usr/local/bin/brew'
alias pyenv86="arch -x86_64 pyenv"
alias func="/usr/local/Cellar/azure-functions-core-tools@4/4.0.5095/func"
fi

所以在VS代码编辑器中,我有rosetta终端。运行arch将显示i386模拟ARM64。

  1. azure-functions-core-tools@4/4.0.5095文件夹从opt/homebrew/Cellar/azure-functions-core-tools@4复制到/usr/local/Cellar/azure-functions-core-tools@4/4.0.5095/func",因为如果我从终端安装azure-functions-core-tools@4,它总是进入自制文件夹。

如果在Rosetta终端运行func host start,显示错误

为:/usr/local/cellar/azure-functions-core-tools@4/4.0.5095/workers/python初始化工作提供程序失败

Microsoft.Azure.WebJobs。python语言不支持Script: Architecture Arm64。为/usr/local/cellar/azure-functions-core-tools@4/4.0.5095/workers/python......初始化工作提供程序失败(skip)

我已经遵循网上的任何解决方案,大多数都是这样在M1芯片上运行azure功能。

是我做错了什么还是我错过了什么?

4/13更新host.json

{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}

我四处寻找解决方案(Azure函数在Apple Silicon上不支持Python),发现这个评论提供了一个很好的解决方案,而不依赖于仿真:https://github.com/Azure/azure-functions-python-worker/issues/915#issuecomment-1342319719

你必须修改你的自制azure函数文件夹的路径(我的目前是4.0.5198,其中-因为说明是4.0.4915)。

当Azure Functions的自制配方更新时,您还需要重复这些步骤。

为:/usr/local/cellar/azure-functions-core-tools@4/4.0.5095/workers/python初始化worker提供程序失败

你已经安装的所有工具都是正确的,再次检查Azure Functions核心工具,Python版本是否安装正确。

检查host.json文件,检查languageWorkers:python:pythonPath

设置是否正确给出了Python可执行路径我知道微软明确提到过ARM64设备不支持函数(Python),但提供了模拟x86环境的替代方案。

在zsh环境中给出这两个体系结构的代码,以便它自动检测并在该环境中运行,如这篇GitHub文章所示。

archcheck () {$(uname -p)"=";i386"];然后在i386模式下运行(Rosetta)"$(/usr/local/homebrew/bin/brew shellenv)"别名brew='/usr/local/homebrew/bin/brew' #不确定别名是否会从函数中设置elif运行在ARM模式(M1)"$(/opt/homebrew/bin/brew shellenv)"别名brew='/opt/homebrew/bin/brew' #不确定别名是否会从函数中设置其他的$(uname -p)//$(arch)"fi}别名native="arch -arm64 ZSH &&archcheck"Alias rosetta="arch -x86_64 ZSH &&archcheck"

如果仍然没有解决,您可以通过提供您的环境和问题详细信息在GitHub Azure Functions Host的官方论坛中提出问题。

尝试在.vscode/settings.json

"azureFunctions.funcCliPath": "/usr/local/Cellar/azure-functions-core-tools@4/4.0.5095/func"

相关内容

最新更新