Bitbucket: ModuleNotFoundError: No module named 'numpy'

Bitbucket: ModuleNotFoundError: No module named 'numpy'

我正在尝试使用以下 bitbucket-pipelines.yml

在 Bitbucket 中设置单元测试
image: python:3.7.3

pipelines:
  default:
    - step:
      caches:
        - pip
      script: # Modify the commands below to build your repository.
        - pip3 install --upgrade pip setuptools wheel
        - pip3 install -r requirements.txt
    - step:
      script:
        - python3 -m unittest discover -vp 'Test*.py'

文件 requirements.txt 如下:

tensorflow==2.4.1
Keras==2.4.3
pandas==1.1.3
requests==2.24.0
matplotlib==3.3.2
numpy==1.19.2

numpy 存在于需求中,但是当它运行单元测试时,出现以下错误:

  import numpy as np
ModuleNotFoundError: No module named 'numpy'

问题是,在第一步中,您使用 pip3 安装了依赖项,这在下一步中将不可用,因为它是不同的容器。如果你想保留你的依赖项,你必须按如下方式缓存它们:

image: python:buster
definitions:
  caches:
    pip3: /usr/local/lib/python3.9/site-packages

路径是可变的,具体取决于您拥有的 python 版本,您可以 运行 管道中的命令 pip3 show <dependency> 来验证路径是否正确。

command results

并且你需要将缓存添加到需要依赖的步骤,在你的情况下,第二步:

image: python:3.7.3
definitions:
  caches:
    pip3: <path>
pipelines:
  default:
    - step:
      name: First step
      caches:
        - pip3
      script: # Modify the commands below to build your repository.
        - pip3 install --upgrade pip setuptools wheel
        - pip3 install -r requirements.txt
    - step:
      name: Second step
      caches:
        - pip3
      script:
        - python3 -m unittest discover -vp 'Test*.py'

最后,我通过在虚拟环境中生成一个新的 requirements.txt 解决了这个问题。 然后我将 bitbucket-pipelines.yml 替换为 Atlassian 在 this link:

提供的模板之一
#  Template python-build

#  This template allows you to validate your python code.
#  The workflow allows running tests and code linting on the default branch.

image: python:3.8

pipelines:
  default:
    - parallel:
      - step:
          name: Test
          caches:
            - pip
          script:
            - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
            - pip install pytest
            - pytest -v tests/* --junitxml=test-reports/report.xml

这里有更多信息:https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/