ModuleNotFoundError - Модуль найден в IntelliSense Pycharm, но не при выполнении программы - PullRequest
0 голосов
/ 23 марта 2020

Используя PyCharm, у меня есть проект для парсера SMTP со следующей структурой:

- SMTP
  - Classes
    - Models
    - Transformers
  - Tests 

В Tests Я ссылаюсь на классы из SMTP.Classes.Transformers, например:

from SMTP.Classes.Transformers.myclass import MyClass

Это работает, и мои модульные тесты выполняются правильно.

Однако теперь я добавил прокси-файл myProxy.py:

- SMTP
  - Classes
    - Models
    - Transformers
  - Tests 
  - myProxy.py

В myProxy.py Я пытаюсь чтобы импортировать мои классы, как указано выше:

from SMTP.Classes.Transformers.myclass import MyClass

Когда я печатаю from S, PyCharm фактически предлагает SMTP, и когда я записываю его, он не показывает ошибок. Я даже могу запустить myProxy в PyCharm, используя кнопку «Выполнить».

Однако, когда я пытаюсь запустить myProxy.py из консоли, я получаю ModuleNotFoundError: No module named 'SMTP' Когда я удаляю часть SMTP из каждый затронутый файл, то я могу запустить это из консоли. И это даже работает на PyCharm. Однако PyCharm почему-то подчеркивает мой импорт как ложный.

Что именно здесь является ошибкой и как ее устранить, чтобы у меня не было ошибок в PyCharm и я мог запустить мою программу как на pycharm, так и на консоли?

1 Ответ

1 голос
/ 23 марта 2020

Вы можете попытаться опустить SMTP и вместо этого просто пометить Classes как Sources Root в PyCharm, выполнив: щелкните правой кнопкой мыши на Classes directory> Отметить каталог как> Sources Root.

...