Python的Azure函数-找不到依赖项
我有一个函数,我想使用如下所述的连续交付将其提升到Azure函数: 启动函数时,出现以下错误:Python的Azure函数-找不到依赖项,python,azure,azure-devops,azure-functions,Python,Azure,Azure Devops,Azure Functions,我有一个函数,我想使用如下所述的连续交付将其提升到Azure函数: 启动函数时,出现以下错误: 结果:失败异常:ModuleNotFoundError:没有名为“azure.keyvault”的模块。故障排除指南:https://aka.ms/functions-modulenotfound 堆栈:文件“/azure functions host/workers/python/3.8/LINUX/X64/azure\u functions\u worker/dispatcher.py”,第28
结果:失败异常:ModuleNotFoundError:没有名为“azure.keyvault”的模块。故障排除指南:https://aka.ms/functions-modulenotfound 堆栈:文件“/azure functions host/workers/python/3.8/LINUX/X64/azure\u functions\u worker/dispatcher.py”,第284行,在\u handle\u function\u load\u request func=loader.load\u function(文件“/azure functions host/workers/python/3.8/LINUX/X64/azure\u functions\u worker/utils/wrappers.py”中,第42行,调用提升扩展异常消息(e,消息)文件“/azure函数主机/workers/python/3.8/LINUX/X64/azure函数工作者/utils/wrappers.py”,第40行,调用返回函数(*args,**kwargs)文件“/azure函数主机/workers/python/3.8/LINUX/X64/azure函数工作者/loader.py”,第76行,在加载函数mod=importlib.import\u模块(fullmodname)文件/usr/local/lib/python3.8/importlib/\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu“/home/site/wwwroot/CaseDB_Functions/case_crawler/federal_cases.py”,第1行,来自共享代码导入blob_处理程序文件“/home/site/wwwroot/shared_code/blob_处理程序.py”,第5行,来自azure.keyvault.secrets导入SecretClient
(注意:仅此依赖项并不是一个特定的问题,它只是在我的代码中导入的第一个依赖项-已经用不同的包切换了第一个导入,这基本上导致了相同的错误,只是另一个包)
我已经在不同的环境中尝试过我的代码(也是Ubuntu,它应该与Azure函数使用的图像相同),并且一直使用venv。我的代码在本地运行得很好,所以在构建代码并将其发布到Azure(通过Azure管道完成)时,我似乎遗漏了一些东西
My requirements.txt:
appdirs==1.4.4
astroid==2.5.1
azure-common==1.1.26
azure-core==1.12.0
azure-cosmos==4.2.0
azure-functions==1.6.0
azure-identity==1.5.0
azure-keyvault==4.1.0
azure-keyvault-certificates==4.2.1
azure-keyvault-keys==4.3.1
azure-keyvault-secrets==4.2.0
azure-storage-blob==12.8.0
beautifulsoup4==4.9.3
certifi==2020.12.5
cffi==1.14.5
chardet==3.0.4
colorama==0.4.4
cryptography==3.4.6
decorator==4.4.2
distlib==0.3.1
filelock==3.0.12
idna==2.10
isodate==0.6.0
isort==5.7.0
lazy-object-proxy==1.5.2
lxml==4.6.2
mccabe==0.6.1
msal==1.10.0
msrest==0.6.21
oauthlib==3.1.0
pipenv==2020.11.15
pycparser==2.20
PyJWT==2.0.1
pylint==2.7.2
requests==2.25.1
requests-oauthlib==1.3.0
self==2020.12.3
six==1.15.0
soupsieve==2.2
toml==0.10.2
urllib3==1.26.3
virtualenv==20.4.2
virtualenv-clone==0.5.4
wrapt==1.12.1
My azure-pipelines.yml:
# Python Function App to Linux on Azure
# Build a Python function app and deploy it to Azure as a Linux function app.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/python
trigger:
- master
variables:
# Azure Resource Manager connection created during pipeline creation
azureSubscription: '<subscription-Id>'
# Function app name
functionAppName: '<functionAppName>'
# Agent VM image name
vmImageName: 'ubuntu-latest'
# Working Directory
workingDirectory: '$(System.DefaultWorkingDirectory)/'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- bash: |
if [ -f extensions.csproj ]
then
dotnet build extensions.csproj --runtime ubuntu.16.04-x64 --output ./bin
fi
workingDirectory: $(workingDirectory)
displayName: 'Build extensions'
- task: UsePythonVersion@0
displayName: 'Use Python 3.7'
inputs:
versionSpec: 3.7 # Functions V2 supports Python 3.9 as of today
- bash: |
pip3 install -r requirements.txt
workingDirectory: $(workingDirectory)
displayName: 'Install application dependencies'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(workingDirectory)'
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- publish: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
artifact: drop
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
condition: succeeded()
jobs:
- deployment: Deploy
displayName: Deploy
environment: 'development'
pool:
vmImage: $(vmImageName)
strategy:
runOnce:
deploy:
steps:
- task: AzureFunctionApp@1
displayName: 'Azure functions app deploy'
inputs:
azureSubscription: '$(azureSubscription)'
appType: functionAppLinux
appName: $(functionAppName)
package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
Azure上Linux的Python函数应用程序
#构建Python函数应用程序并将其作为Linux函数应用程序部署到Azure。
#添加分析代码、保存构建构件、部署等步骤:
# https://docs.microsoft.com/azure/devops/pipelines/languages/python
触发:
-主人
变量:
#在管道创建期间创建Azure资源管理器连接
azureSubscription:“”
#函数应用程序名称
函数名:“”
#代理虚拟机映像名称
vmImageName:“ubuntu最新版本”
#工作目录
工作目录:'$(System.DefaultWorkingDirectory)/'
阶段:
-阶段:建造
显示名称:构建阶段
工作:
-工作:建造
显示名称:构建
游泳池:
vmImage:$(vmImageName)
步骤:
-狂欢节:|
如果[-f extensions.csproj]
然后
dotnet build extensions.csproj——运行时ubuntu.16.04-x64——输出。/bin
fi
工作目录:$(工作目录)
displayName:“生成扩展”
-任务:UsePythonVersion@0
displayName:“使用Python 3.7”
投入:
versionSpec:3.7#函数V2目前支持Python 3.9
-狂欢节:|
pip3安装-r requirements.txt
工作目录:$(工作目录)
displayName:“安装应用程序依赖项”
-任务:ArchiveFiles@2
displayName:“存档文件”
投入:
rootFolderOrFile:“$(工作目录)”
includeRootFolder:false
档案类型:zip
archiveFile:$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive:true
-发布:$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
神器:掉落
-阶段:部署
displayName:部署阶段
德彭森:建造
条件:成功()
工作:
-部署:部署
显示名称:部署
环境:“发展”
游泳池:
vmImage:$(vmImageName)
战略:
跳动:
部署:
步骤:
-任务:AzureFunctionApp@1
displayName:“Azure功能应用程序部署”
投入:
azureSubscription:“$(azureSubscription)”
appType:functionAppLinux
appName:$(functionAppName)
包:“$(Pipeline.Workspace)/drop/$(Build.BuildId.zip”
(注意:当然,在真实文件中包括我的订阅Id和FunctionAppName)
在构建过程中,我没有从Azure管道中得到任何错误。所有依赖项都已打包安装。我甚至亲自下载了.zip文件进行了检查。老实说,对我来说,Azure函数似乎忽略了我的venv。有人能帮我吗?这是一个与您的问题非常类似的问题:首先,请遵循此wik中的疑难解答步骤我了解。如果您仍然存在此问题,您可以创建一个问题。此外,请尝试将YAML文件中的pip install-r requirements.txt行更改为pip install--target=“$(workingDirectory)/.python_packages/lib/site packages”-r requirements.txt。希望有帮助。