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/
我正在尝试使用以下 bitbucket-pipelines.yml
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/