python - 从不同文件夹级别导入类 - Python

标签 python class import subdirectory

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

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

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

from models.Encoder import BiDirectionalEncoder 

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

from ..models.Encoder import BiDirectionalEncoder

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

有什么巧妙的方法可以解决这个问题吗?我不想使用任何 sys.path.append() 来强制添加路径 我在 Spyder 4.0.1 中使用 Python 3.7.6 谢谢!

最佳答案

在同一个包中,您可以执行相对导入,但由于您要脱离当前包,因此需要执行绝对导入。

from MyProject.models.Encoder import BiDirectionalEncoder 

关于python - 从不同文件夹级别导入类 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60185566/

相关文章:

Javascript类-函数优化(函数内的函数)

python - 在numpy中返回矩阵邻居总和的最简单方法

python - 用python检测网页更新

python - Python 中的错误 "Previous SQL was not a query"?

c++ - 重载运算符不能用于为其定义的类

python - 如果行不存在,使用 Python 将数据更新到 mysql

Python ctypes - 获取 CFUNCTYPE 的名称

python - while 循环执行类,然后停止而不是重新开始?

java - 无法导入 java.lang.instrument.Instrumentation

java - 无法使用 Maven 在 Android Studio 中导入 GSON/JSON