我看到很多关于导入模块错误的问题,但我无法通过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环境中运行。
我尝试了什么:
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,因为我从此目录运行脚本以将上述模块添加到路径。不帮助
src
添加到tests目录中的import。不帮助来自数据集导入DatasetHelper ModuleNotFoundError:没有名为'dataset'的模块
无论是在src.__init__
还是更可能在src.dataset.__init__
,都有进口声明from dataset import DatasetHelper
。你必须把它重写为from src.dataset import…