无法在子目录中导入模块

时间:2018-06-15 21:23:19

标签: python import

我有一个软件包,我正在尝试从中导入某些模块,但是我失败了。我的目录结构的方式是:

top/
    main_script.py
    middle/
        foo.py
        utils.py
        __init__.py`  
每当我运行它时,foo.py导入utils.py就好了,但是,如果我运行main_script.py,foo.py将无法通过给我一个ModuleNotFoundError导入utils.py:没有名为'utils.py'的模块

我在main_script.py中导入foo.py的方式是:
from middle import foo

我将utils.py导入foo.py的方式是:
import utils

如果我导入numpy到foo.py而不是导入utils并运行main_script.py它将导入并运行得很好,但是,如果foo.py包含utils,则运行main_script.py将失败。

关于如何在不将main_script.py放入中间/?

的情况下解决此问题的任何想法

2 个答案:

答案 0 :(得分:0)

如果你可以在main_script中分享你的导入方式,那会很有帮助。

您的导入应该是:

from middle import foo

from middle import foo, utils

答案 1 :(得分:0)

试试这个:

<强> main_script.py

from middle import foo

print(__name__)

<强> foo.py

from middle import utils

print(__name__)

<强> utils.py

print(__name__)

要了解详情,请查看docs