Gitlab CI Python运行测试 - ModuleNotFoundError:没有名为xxx的模块

问题描述 投票:0回答:1

我看到很多关于导入模块错误的问题,但我无法通过Gitlab CI管道解决问题。

我的项目结构:

├───config ├───docs ├───src __init__.py │ ├───dataset __init__.py │ ├───exceptions │ ├───resources │ └───utils __init__.py └───tests __init__.py └───resources __init__.py

我想用pytest运行测试。我从根目录调用此命令python -m pytest -p no:cacheprovider或使用unittest'python -m unittest discover -v',并尝试从test目录调用。在这两种情况下,我都有从数据集模块导入类的问题。有趣的是,我有两个测试文件。

第一个文件导入:

import os import unittest

从src.utils.FileManager导入FileManager

第二次进口:

来自src.dataset.DatasetHelper导入DatasetHelper

第一个文件正在传递,但第二个文件失败并出现错误:

来自数据集导入DatasetHelper ModuleNotFoundError:没有名为'dataset'的模块

所以问题是像src中的utils这样的其他模块被正确导入,只有数据集有问题。我几天都在苦苦挣扎,完全没有想法。我也试图改变而不是从数据集改为src.dataset。它没用。我可以通过点击右边的按钮在PyCharm中运行测试,然后只运行测试但不在CI环境中运行。

我尝试了什么:

  • 添加模块到$ PYTHONPATH就像

sys.path.insert(0,“/ builds / USER / PROJECT / src / dataset”)

sys.path.insert(0,“/ builds / USER / PROJECT / src”)

sys.path.insert(0,“/ builds // USER / PROJECT / tests”)

添加之前PYTHONPATH的内容是:当前$ PYTHONPATH:['/ builds / USER / PROJECT / config','/ usr / local / lib / python36.zip','/ usr / local / lib / python3.6' ,'/ usr / local / lib / python3.6 / lib-dynload','/ usr / local / lib / python3.6 / site-package']。列表中的第一个模块是config,因为我从此目录运行脚本以将上述模块添加到路径。不帮助

  • 从根目录运行test命令,并将前缀src添加到tests目录中的import。不帮助
python python-3.x pytest gitlab-ci
1个回答
0
投票

来自数据集导入DatasetHelper ModuleNotFoundError:没有名为'dataset'的模块

无论是在src.__init__还是更可能在src.dataset.__init__,都有进口声明from dataset import DatasetHelper。你必须把它重写为from src.dataset import…

© www.soinside.com 2019 - 2024. All rights reserved.