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

GitLab CI/CD执行pytest报错:找不到'main'模块,本地运行正常

GitLab CI/CD 流水线导入模块失败的解决办法

本地在项目根目录运行pytest无异常,但GitLab CI执行时抛出ModuleNotFoundError: No module named 'main',本质是CI环境中Python未将src目录纳入模块搜索路径,以下是三种可行解决方法:

方法一:在CI脚本中添加PYTHONPATH环境变量

直接在CI执行pytest前,将项目的src目录添加到Python的模块搜索路径中:
修改.gitlab-ci.yml的script部分:

image: python:3.10.9

before_script:
  - pip install --upgrade pip
  - pip install pytest

stages:
- unit

unit-tests:
  stage: unit
  image: python:3.10.9
  script:
    - export PYTHONPATH="$PYTHONPATH:$PWD/src"
    - pytest -v
  allow_failure: true

方法二:通过setup.py安装项目为可编辑模式

利用项目已有的setup.py,在CI环境中安装项目为可编辑模式,让Python自动识别main模块:
更新.gitlab-ci.yml的before_script:

image: python:3.10.9

before_script:
  - pip install --upgrade pip
  - pip install pytest
  - pip install -e .  # 安装当前项目,支持实时修改

stages:
- unit

unit-tests:
  stage: unit
  image: python:3.10.9
  script:
    - pytest -v
  allow_failure: true

这种方法更符合Python项目规范,同时能处理项目依赖,推荐优先使用。

方法三:调整测试文件的相对导入路径

修改src/test/test_cleaning.py的导入语句为相对导入,适配包结构:

from ..main.cleaning.clean_txt import clean as ctxt

注意:使用相对导入后,需确保在项目根目录执行pytest,否则可能出现导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:27:20