Как я могу импортировать пакет paralel в python 3.6.9 - PullRequest
0 голосов
/ 09 февраля 2020

Я создаю проект со следующей структурой папок.

Проект с пакетом '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

1 Ответ

0 голосов
/ 15 февраля 2020

Чтобы решить эту проблему, я добавляю путь к файлу проекта root "T CC"

sys.path.append('home/jamal/Documents/dev/tcc') 
from src.models.Arm import Arm

Теперь я могу получить доступ ко всем модулям, используя "sr c."

...