Я видел много вопросов об ошибке импорта модулей, но мне не удалось решить проблему с конвейером 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 find -v' из корневого каталога, а также попытался вызвать из тестового каталога. В обоих случаях у меня проблема с импортом класса из модуля набора данных. Что интересно, у меня есть два файла тестов.
Первый импорт файлов:
import os import unittest
из src.utils.FileManager import FileManager
Второй импорт:
из src.dataset.DatasetHelper import DatasetHelper
Первый файл проходит, но второй не удается с ошибкой:
из набора данных импорта. DatasetHelper ModuleNotFoundError: Нет модуля
с именем 'набор данных'
Так что дело в том, что другие модули, такие как утилиты из src, импортируются корректно, проблема возникает только с набором данных. Я борюсь с этим несколько дней и у меня совершенно нет идей. Я также попытался изменить вместо набора данных на 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-packages '].
Первый модуль в списке является config, потому что я запускаю скрипт из этого каталога, чтобы добавить вышеупомянутые модули к пути. Не помогает
- Запустите тестовую команду из корневого каталога и добавьте префикс
src
к импорту в тестовом каталоге. Не помогает