Я создаю проект со следующей структурой папок.
Проект с пакетом 'sr c' внутри. Пакет 'models' и пакет 'tests' находятся внутри 'sr c', и каждый имеет свои собственные модули внутри.
Проблема : я пытаюсь импортировать «модели» пакета в модуль внутри пакета «тесты».
Это структура папок:
-project
-src
-models
-__init__.py
-ArmModel.py
-tests
-test_arm_model.py
ArmModel.py определяет класс:
class ArmModel:
def __init__(self, definition='std def'):
self.definition = definition
И test_arm_model.py (где у меня проблема) должен импортировать ArmModel из моделей, чтобы протестировать его:
import unittest
from src import models
class TestArmModel(unittest.TestCase):
def test_arm_model(self):
arm = models.ArmModel('arm')
self.assertEqual(arm.definition, 'arm')
if __name__ == '__main__':
unittest.main()
У меня проблемы с импортом "Arm.py" из "models" внутри модуля "tests".
Traceback (последний вызов был последним): File "./src/tests /test_arm_model.py ", строка 2, из sr c импорт моделей ModuleNotFoundError: Нет модуля с именем 'sr c'
Попытка 1: я попытался использовать следующий код и получил та же ошибка
from src import models
Я попытался получить класс напрямую, как показано ниже, и получил ту же ошибку
from src.models.ArmModel import ArmModel
И я попытался манипулировать sys.path,
import sys
sys.path.append('/home/jamal/dev/tcc/src/')
from src.models.ArmModel import ArmModel
И получил ту же ошибку
from src.models.ArmModel import ArmModel
ModuleNotFoundError: No module named 'src'
Когда я попытался
sys.path.append('/home/jamal/dev/tcc/src/models/')
или
sys.path.append('/home/jamal/dev/tcc/src/models/ArmModel')
, автозаполнение из PyCharm IDE не могло Не удалось найти пакет, и я получил ту же ошибку при запуске кода.
Я также попытался добавить '../' к sys.path. Когда я попробовал приведенный ниже код, я получил ModuleNotFoundError: Нет модуля с именем 'sr c'
import sys
sys.path.append('../')
from src.models.ArmModel import ArmModel
Когда я попытался изменить импорт на
from models.ArmModel import ArmModel
Отображалась IDE ошибка с> неразрешенной ссылкой под моделями и ArmModel