You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipelines已安装pandas仍遇ModuleNotFoundError问题求助

解决Azure DevOps Pipeline中跨作业Python依赖丢失问题

问题根源

每个Pipeline作业都运行在独立的虚拟机实例上,哪怕指定了同一个vmImage,作业之间也不会共享环境、已安装的包或文件。第一个作业InstallPackages中安装的pandas仅存在于它运行的虚拟机中,第二个作业RunScript启动的是全新虚拟机,自然找不到该依赖。


解决方案

方案1:合并作业(最简单直接)

将依赖安装和脚本运行放到同一个作业里,共享同一个运行环境:

stages:
- stage: scrape_text
  jobs:
  - job: RunScraper
    displayName: 'Install dependencies and run scraper'
    pool:
      vmImage: 'ubuntu-latest'
    steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '3.9'
          addToPath: true
      - script: |
          python -m pip install --upgrade pip
          python -m pip install pandas
        displayName: 'Install dependencies'
      - task: PythonScript@0
        displayName: 'Run scraper script'
        inputs:
          scriptSource: 'filePath'
          scriptPath: 'path/to/text_scrapper.py'

方案2:使用Pipeline缓存(适合多作业/多次运行场景)

通过Azure DevOps的缓存任务,将pip安装的包缓存起来,第二个作业直接读取缓存:

stages:
- stage: scrape_text
  jobs:
  - job: InstallPackages
    displayName: 'Install packages and cache'
    pool:
      vmImage: 'ubuntu-latest'
    steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '3.9'
          addToPath: true
      - task: Cache@2
        inputs:
          key: 'pip | "$(Agent.OS)" | requirements.txt' # 若有requirements.txt,用它做key更精准
          restoreKeys: |
            pip | "$(Agent.OS)"
          path: $(Agent.ToolsDirectory)/python/3.9.*/x64/lib/python3.9/site-packages
        displayName: 'Cache pip packages'
      - script: |
          python -m pip install --upgrade pip
          python -m pip install pandas
        displayName: 'Install dependencies'

  - job: RunScript
    displayName: 'Scrape text'
    pool:
      vmImage: 'ubuntu-latest'
    dependsOn: InstallPackages
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '3.9'
        addToPath: true
    - task: Cache@2
      inputs:
        key: 'pip | "$(Agent.OS)" | requirements.txt'
        restoreKeys: |
          pip | "$(Agent.OS)"
        path: $(Agent.ToolsDirectory)/python/3.9.*/x64/lib/python3.9/site-packages
      - task: PythonScript@0
        displayName: 'Run scraper script'
        inputs:
          scriptSource: 'filePath'
          scriptPath: 'path/to/text_scrapper.py'

方案3:在第二个作业中重复安装依赖

如果必须拆分作业,可在第二个作业中再次执行依赖安装步骤:

stages:
- stage: scrape_text
  jobs:
  - job: InstallPackages
    displayName: 'Install packages'
    pool:
      vmImage: 'ubuntu-latest'
    steps:
      - task: UsePythonVersion@0
        inputs:
          versionSpec: '3.9'
          addToPath: true
      - script: |
          python -m pip install --upgrade pip
          python -m pip install pandas
        displayName: 'Install dependencies'

  - job: RunScript
    displayName: 'Scrape text'
    pool:
      vmImage: 'ubuntu-latest'
    dependsOn: InstallPackages
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '3.9'
        addToPath: true
    - script: |
        python -m pip install --upgrade pip
        python -m pip install pandas
      displayName: 'Install dependencies again'
    - task: PythonScript@0
      displayName: 'Run scraper script'
      inputs:
        scriptSource: 'filePath'
        scriptPath: 'path/to/text_scrapper.py'

内容的提问来源于stack exchange,提问作者Timothy Liew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:52:48