导入在同一模块中定义的类

时间:2014-03-22 23:54:08

标签: python

我无法使用我在模块中定义的类。我看过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']

1 个答案:

答案 0 :(得分:3)

在Python 3中,您可以为相对于当前模块位置的导入添加.

from .hidden_layer import HiddenLayer