导入的Python模块中的import语句如何工作?

时间:2018-04-20 19:09:00

标签: python import

假设我有以下文件夹结构:

project/
    a.py
    module/
        b.py
        c.py
        __init__.py

a.py需要导入b.py,因此应该包含from module import b

b.py需要导入c.py,因此它应该只包含import c,因为它们位于同一个文件夹中。但是当ModuleNotFoundError运行时,这会抛出a.py

如果我将b.py中的行切换为from module import c,那么a.py将会运行,但如果我尝试单独运行b.py则会抛出ModuleNotFoundError spark.sql("SELECT MAX(date) as maxDate FROM account").first()["maxDate"] }。

在Python中导入的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

在python 3中尝试使用:

from . import c

在您的module / b.py文件中。

这会强制解释器查看模块的本地文件夹。

如果您需要将其作为可执行文件,您将无法运行您的b模块(至少不能使用python module/b.py),或许可以查看:

Relative imports in Python 3

作为sugested,为了运行你的b模块你可以做

python -m module.b

来自父文件夹。