GitLab Pipeline测试阶段失败:numpy依赖安装异常求助
GitLab部署Python模型时numpy模块找不到问题排查
错误日志
ERROR: No matching distribution found for numpy==1.23.1 $ if [[ "${COVERAGE_ARGS}" == "" ]]; then $ dir_loc=`pwd` $ COVERAGE_ARGS="--cov=${dir_loc}" $ fi $ pytest --junitxml=reports/report.xml --cov-config=${COV_CONFIG} ${COVERAGE_ARGS} ${EXTRA_ARGS} ============================= test session starts ============================== platform linux -- Python 3.7.10, pytest-7.1.2, pluggy-1.0.0 rootdir: /builds/Ahs1yUQY/1/dse/dscp/dse-dscp-python-hoffinator plugins: cov-3.0.0, requests-mock-1.9.3 collected 0 items / 1 error ==================================== ERRORS ==================================== ______________________ ERROR collecting test/test_main.py ______________________ ImportError while importing test module '/builds/Ahs1yUQY/1/dse/dscp/dse-dscp-python-hoffinator/test/test_main.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.7/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) test/test_main.py:5: in <module> from src.hoffinator import hoffinator_functions src/hoffinator/hoffinator_functions.py:3: in <module> import numpy as np E ModuleNotFoundError: No module named 'numpy' - generated xml file: /builds/Ahs1yUQY/1/dse/dscp/dse-dscp-python-hoffinator/reports/report.xml - ---------- coverage: platform linux, python 3.7.10-final-0 -----------
requirements.txt内容
ccplatlogging boto3~=1.20.33 email-validator~=1.1.3 appnope==0.1.3 argon2-cffi==21.3.0 argon2-cffi-bindings==21.2.0 asttokens==2.0.5 attrs==21.4.0 backcall==0.2.0 beautifulsoup4==4.11.1 bleach==5.0.1 cffi==1.15.1 cycler==0.11.0 debugpy==1.6.2 decorator==5.1.1 defusedxml==0.7.1 entrypoints==0.4 executing==0.8.3 fastjsonschema==2.16.1 fonttools==4.34.4 iniconfig==1.1.1 ipykernel==6.15.1 ipython==7.34.0 ipython-genutils==0.2.0 ipywidgets==7.7.1 jedi==0.18.1 Jinja2==3.1.2 joblib==1.1.0 jsonschema==4.7.2 jupyter==1.0.0 jupyter-client==7.3.4 jupyter-console==6.4.4 jupyter-core==4.11.1 jupyterlab-pygments==0.2.2 jupyterlab-widgets==1.1.1 kiwisolver==1.4.4 MarkupSafe==2.1.1 matplotlib==3.5.2 matplotlib-inline==0.1.3 mistune==0.8.4 nbclient==0.6.6 nbconvert==6.5.0 nbformat==5.4.0 nest-asyncio==1.5.5 notebook==6.4.12 numpy==1.23.1 packaging==21.3 pandas==1.4.3 pandocfilters==1.5.0 parso==0.8.3 patsy==0.5.2 pexpect==4.8.0 pickleshare==0.7.5 Pillow==9.2.0 pluggy==1.0.0 ppscore==1.2.0 prometheus-client==0.14.1 prompt-toolkit==3.0.30 psutil==5.9.1 ptyprocess==0.7.0 pure-eval==0.2.2 py==1.11.0 pycparser==2.21 pycryptodome==3.15.0 Pygments==2.12.0 pyodbc==4.0.34 pyparsing==3.0.9 pyrsistent==0.18.1 pytest==7.1.2 python-dateutil==2.8.2 pytz==2022.1 pyzmq==23.2.0 qtconsole==5.3.1 QtPy==2.1.0 scikit-learn==0.24.2 scipy==1.8.1 seaborn==0.11.2 Send2Trash==1.8.0 six==1.16.0 soupsieve==2.3.2.post1 stack-data==0.3.0 statsmodels==0.13.2 teradatasql==17.20.0.0 terminado==0.15.0 threadpoolctl==3.1.0 tinycss2==1.1.1 tomli==2.0.1 tornado==6.2 traitlets==5.3.0 wcwidth==0.2.5 webencodings==0.5.1 widgetsnbextension==3.6.1
问题分析与解决方法
- 核心问题:日志开头的
ERROR: No matching distribution found for numpy==1.23.1说明numpy安装失败,后续的ModuleNotFoundError是安装失败的直接结果,并非代码引用问题。 - 排查与解决步骤:
- 补充CI依赖安装步骤:检查GitLab CI配置文件(如
.gitlab-ci.yml),确保在执行pytest命令前添加pip install -r requirements.txt,否则依赖不会被安装到CI环境中。 - 调整numpy版本适配环境:numpy 1.23.1官方虽支持Python 3.7,但部分旧Linux架构可能缺少预编译二进制包,导致源码编译失败。可将numpy版本降级为
numpy==1.21.6(对Python 3.7兼容性更稳定),或改用版本范围约束numpy>=1.21,<1.24。 - 更换PyPI源解决网络问题:如果是网络波动导致无法下载包,可修改安装命令为
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple,使用国内镜像源加速下载。 - 验证CI环境Python版本:确认CI运行环境使用的Python版本确实为3.7.10,避免环境切换导致依赖安装到其他Python版本的路径下。
- 补充CI依赖安装步骤:检查GitLab CI配置文件(如
内容的提问来源于stack exchange,提问作者Dillon Choi
相关产品推荐
相关产品推荐

