我无法使用我在模块中定义的类。我看过this stackoverlfow post,答案似乎是“你不需要进口”。这绝对不是我遇到的行为。我正在使用Python 3.3。这是我的目录结构:
root/
__init__.py
mlp/
__init__.py
mlp.py
layers/
__init__.py
hidden_layer.py
dropout_layer.py
我的问题是:dropout_layer.py
中定义的类扩展了hidden_layer.py
中的类,但是当我尝试导入hidden_layer时,我有时会遇到错误,具体取决于我执行代码的目录。例如,from layers.hidden_layer import HiddenLayer
然后我运行我的代码,如果我从root/mlp
执行它。但是,如果我从root
执行我的代码,则此导入不起作用。这对我来说很奇怪。我怎样才能正常工作?
我唯一的非空__init__.py
文件位于root/mlp/layers/
:
# root/mlp/layers/__init__.py
__all__ = ['hidden_layer', 'dropout_layer']
答案 0 :(得分:3)
在Python 3中,您可以为相对于当前模块位置的导入添加.
:
from .hidden_layer import HiddenLayer