Tenho um problema com as importações de módulos em Python. Estou fazendo um projeto com PyQt e estou tentando refatorá-lo e reestruturá-lo.
A hierarquia é a próxima:
./main.py
./logic/__init__.py
./logic/transforms.py
./logic/hopfield.py
./gui/__init__.py
./gui/interface.py
./gui/mplwidget.py
./img
O erro:
Traceback (most recent call last):
File "...\main.py", line 5, in <module>
from gui.interface import Ui_MainWindow
File ...\gui\interface.py", line 215, in <module>
from mplwidget import MplWidget
ModuleNotFoundError: No module named 'mplwidget'
O arquivo interface.py
class Ui_MainWindow(object):
.
.
.
from mplwidget import MplWidget
O arquivo 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):
.
.
.
Não entendo por que não funciona, já que dentro do módulo, se eu executar o arquivo de interface, ele funciona bem mplwidget
como um módulo.
Arquivo ... \ gui \ interface.py ", linha 215, em
from mplwidget import MplWidget
você interface.py
deveria ter
importação absoluta: from gui.mplwidget import MplWidget
ou
importação relativa: from .mplwidget import MplWidget
Além disso, um ótimo blog que explica as duas importações diferentes
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras