我的笔记本电脑是MacBook Pro(16英寸,2021)Apple M1 Max。
我想用Python运行Azure函数。
目前,Azure函数核心工具不支持在ARM64设备上开发Python函数。要在带有M1芯片的Mac上开发Python函数,必须在模拟的x86环境中运行。要了解更多信息,请参阅ARM64上的x86仿真.
我已经按照指示去做了。
安装Azure功能核心工具
到目前为止,我做了:
-
安装自制程序
-
使用Rosetta打开终端。
-
也可以在Visual Studio Code中启用仿真
-
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
}
}
}
- 我有。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。
- 将
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"