Python的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

我有一个函数,我想使用如下所述的连续交付将其提升到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”,第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。希望有帮助。