Ошибка ModuleNotFoundError в Python 3.8.3

#python-3.x #exception #module

#python-3.x #исключение #модуль

Вопрос:

У меня проблема с импортом модулей в Python. Я делаю проект с PyQt и пытаюсь его реорганизовать и реструктурировать.

Иерархия следующая:

 ./main.py
./logic/__init__.py
./logic/transforms.py
./logic/hopfield.py
./gui/__init__.py
./gui/interface.py
./gui/mplwidget.py
./img
 

Ошибка:

 Traceback (most recent call last):
  File "...main.py", line 5, in <module>
    from gui.interface import Ui_MainWindow
  File ...guiinterface.py", line 215, in <module>
    from mplwidget import MplWidget
ModuleNotFoundError: No module named 'mplwidget'
 

Файл interface.py

 class Ui_MainWindow(object):
  .
  .
  .

from mplwidget import MplWidget
 

Файл main.py

 import sys
import matplotlib
import numpy as np

from gui.interface import Ui_MainWindow
from gui.weightMatrix import Ui_Dialog
from gui.table import TableModel

from logic.hopfield import learn, searchPattern
from logic.transforms import transformVector, transformVectors

from PyQt5 import QtCore, QtGui, QtWidgets

class Actions(Ui_MainWindow):
    def __init__(self):
         .
         .
         .
 

Я не понимаю, почему это не работает, так как внутри модуля, если я запускаю файл интерфейса, он отлично работает вместе с mplwidget модулем.

Ответ №1:

Файл …guiinterface.py «, строка 215, в

из mplwidget импортируйте MplWidget

ваш interface.py должен иметь

абсолютный импорт: from gui.mplwidget import MplWidget

или

относительный импорт: from .mplwidget import MplWidget

Кроме того, отличный блог, который объясняет два разных импорта

Комментарии:

1. Это решение. Это проще, чем я думал. Спасибо за информацию и быстрый ответ!