从子目录导入模块适用于Python 2,但不适用于Python 3

时间:2017-07-31 12:03:57

标签: python python-3.x

所以我有以下结构的目录:

> current_directory
    > submodule
        /__init__.py
        /some_module.py
    /main.py

__init__.py文件中,出现以下语句:

from some_module import some_funciton

虽然在main.py整个submodule导入了import submodule

现在,这在Python 2中执行得非常好,但问题是在Python 3中import中的__init__.py语句引发了ImportError异常:`没有名为'some_module'的模块

在指定导入文件的层次结构时,Python 2和Python 3有什么区别?如何调整代码以使用Python 3?

1 个答案:

答案 0 :(得分:2)

在python 3中,仅以from . import submodule形式支持相对导入。

您应该重写import语句,或者通过将项目目录添加到python路径来使导入绝对:

export PYTHONPATH=current_directory
python main.py