Python 如何修复ModuleNotFoundError:没有名为'的模块;零件';

Python 如何修复ModuleNotFoundError:没有名为'的模块;零件';,python,package,python-import,importerror,Python,Package,Python Import,Importerror,我有以下文件结构: mytests models parts __init__.py ... __init__.py model.py test.py 这是\uuuu init\uuuu.py的内容: from parts import * from models import My_transformer if __name__=='__main__': # ... from parts.attent

我有以下文件结构:

mytests
   models
      parts
        __init__.py
        ...
      __init__.py
      model.py
   test.py
这是
\uuuu init\uuuu.py
的内容:

from parts import *
from models import My_transformer

if __name__=='__main__':
    # ...
from parts.attention import Pre_Net

class My_transformer(tf.keras.Model):
    def __init__(self,config,logger=None):
        super(My_transformer, self).__init__()
        ...
这是
model.py
的内容:

from parts import *
from models import My_transformer

if __name__=='__main__':
    # ...
from parts.attention import Pre_Net

class My_transformer(tf.keras.Model):
    def __init__(self,config,logger=None):
        super(My_transformer, self).__init__()
        ...
运行
test.py
时,出现以下错误:

/mytests/models/__init__.py in <module>()
----> 1 from parts import *
ModuleNotFoundError: No module named 'parts'
如何修复此错误?我在Jupyter笔记本上运行test.py

更新

我有
\uuuu init\uuuu.py
内部
部分
,看起来如下所示:

from attention import *

if __name__=='__main__':
    print('ok')

您应该具有如下结构和导入:

mytests
   models
      parts
        __init__.py
        attention.py
      __init__.py
      model.py
   test.py
models/parts/\uuuuu init\uuuuuu.py
content:

from .attention import Pre_Net
# or from .attention import *
class Pre_Net:
    pass
from .model import *
from models.parts import Pre_Net

class My_transformer(tf.keras.Model):
    def __init__(self,config,logger=None):
        super(My_transformer, self).__init__()
        ...
from models import My_transformer
型号/零件/注意.py
内容:

from .attention import Pre_Net
# or from .attention import *
class Pre_Net:
    pass
from .model import *
from models.parts import Pre_Net

class My_transformer(tf.keras.Model):
    def __init__(self,config,logger=None):
        super(My_transformer, self).__init__()
        ...
from models import My_transformer
models/\uuuuuu init\uuuuuuuuuu.py
内容:

from .attention import Pre_Net
# or from .attention import *
class Pre_Net:
    pass
from .model import *
from models.parts import Pre_Net

class My_transformer(tf.keras.Model):
    def __init__(self,config,logger=None):
        super(My_transformer, self).__init__()
        ...
from models import My_transformer
models/model.py
内容:

from .attention import Pre_Net
# or from .attention import *
class Pre_Net:
    pass
from .model import *
from models.parts import Pre_Net

class My_transformer(tf.keras.Model):
    def __init__(self,config,logger=None):
        super(My_transformer, self).__init__()
        ...
from models import My_transformer
test.py
内容:

from .attention import Pre_Net
# or from .attention import *
class Pre_Net:
    pass
from .model import *
from models.parts import Pre_Net

class My_transformer(tf.keras.Model):
    def __init__(self,config,logger=None):
        super(My_transformer, self).__init__()
        ...
from models import My_transformer

零件需要自己的_uinit__uu.py。python就是这样告诉我们parts是一个包的。@MYousefi:是的,我在
parts
中有
\uuu init\uuuuuu.py
。很抱歉没有提及此事。请查看我的更新。谢谢,只是说
model.py
位于
models
内部,而不是
models/parts
。你能相应地更新答案以适应这种结构吗?@Fluxy我编辑了答案。我真的不知道test.py中有什么,所以我假设您想在test.py模块中导入我的_转换器,这样就可以了。非常感谢你!你的回答解决了我的问题!