从不同的文件夹级别导入类

2024-09-28 05:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个序列到序列模型,我有以下目录结构

MyProject/
     models/ 
          - __init__.py
          - Encoder.py
     train/
          - __init__.py
          - Train.py

在Train.py中,我无法从Encoder.py导入类BiDirectionalEncoder,尽管我尝试使用以下语法

from models.Encoder import BiDirectionalEncoder 

对于上面的行,我得到了错误“ ModuleNotFoundError:没有名为“models”的模块

from ..models.Encoder import BiDirectionalEncoder

最后一行出现错误“ImportError:尝试在没有已知父包的情况下进行相对导入”

有什么好办法解决这个问题吗?我不想使用任何sys.path.append()来强制添加路径 我正在Spyder 4.0.1中使用Python 3.7.6 谢谢


Tags: frompy模型import目录encoderinitmodels
2条回答

在同一个包中,您可以进行相对导入,但由于您要退出当前包,因此需要进行绝对导入

from MyProject.models.Encoder import BiDirectionalEncoder 

如果您使用的是任何IDE(如pycharm),则需要将(我的项目)设置为源引导目录 否则,您需要在settings.py中检查基本目录

然后就可以导入模型了

从models.Encoder导入双向编码器

如果您想从其他环境访问模块,请点击下面的链接 用于访问和共享模块的方式

python module:- importing(accessing) creating and sharing

希望这能解决你的问题

相关问题 更多 >

    热门问题