Python Azure Function因依赖模块缺失导致部署异常问题求助
Python Azure Function因依赖模块缺失导致部署异常问题求助
我最近在尝试通过DevOps流水线部署Python Azure函数,遇到了一个棘手的问题:好几次流水线显示部署成功,但Azure门户里完全看不到我的函数。后来我试着把function_app.py文件顶部导入的所有非Python原生模块都删掉,居然就能正常部署了——这让我确定问题应该出在Python依赖包的构建环节,大概率是依赖没有被正确打包进去。
下面是我流水线中用于准备部署包的代码:
- job: PublishCode steps: - task: UsePythonVersion@0 displayName: 'Use Python 3.11' inputs: versionSpec: 3.11 # Functions V2 supports Python 3.6 as of today architecture: 'x64' - bash: | pip install --target="./.python_packages/lib/site-packages" -r ./function_folder/requirements.txt workingDirectory: $(workingDirectory) - task: ArchiveFiles@2 displayName: 'Archive files' inputs: rootFolderOrFile: '$(workingDirectory)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/package.zip replaceExistingArchive: true - publish: $(Build.ArtifactStagingDirectory)/package.zip artifact: drop
之后这个包会通过公司的Azure资源部署模板部署到Azure函数,模板里用到了AzureFunctionApp@1任务,相关代码如下:
# Azure Deploy Function - ${{ if eq(parameters.validateOnly, false) }}: - task: AzureFunctionApp@1 condition: and(succeeded(), startsWith(variables['APP_TYPE'], 'functionApp')) displayName: 'Azure Deploy Function' inputs: ConnectionType: 'AzureRM' azureSubscription: ${{parameters.serviceConnection}} appType: ${{parameters.appType}} appName: ${{parameters.appName}} ${{ if ne('${{ parameters.slotName }}', '') }}: SlotName: ${{parameters.slotName}} deployToSlotOrASE: true package: ${{parameters.package}} ResourceGroupName: $(APP_RESOURCE_GROUP)
补充一下,这个部署步骤是在Terraform完成函数应用的创建/更新之后运行的。
我特意去查了微软官方文档和相关的GitHub issue,里面都提到要把依赖安装到./.python_packages/lib/site-packages目录下,我完全按照这个要求做了,但问题依然存在。而且我已经确认过生成的zip包里面确实包含了.python_packages文件夹,实在搞不懂哪里出问题了,有没有大佬能帮忙排查一下?
备注:内容来源于stack exchange,提问作者Ben Halladay
相关产品推荐
相关产品推荐

