相对导入模块

时间:2018-05-08 09:59:42

标签: python python-3.x

对于一个项目:

    package\
    │
    └───┐ package\
        │
        ├──── __init__.py
        └───┐ subpackage\
            │
            ├──── __init__.py
            └──── spam.py
subpackage\__init__.py

我可以通过以下方式导入spam

    from package.subpackage.spam import eggs, beans

...或...

    from .spam import eggs, beans

后者对于更改package的名称很有用,这在我目前的早期开发项目中非常有用。

当我不想从spam实际导出任何内容时出现问题,我只是想让它执行其初始化逻辑。

例如,以下内容不起作用。

    import .spam

(我正在使用PyCharm,如果这是相关的,则会识别错误。)

在这种情况下是否有替代或标准的导入方式?

1 个答案:

答案 0 :(得分:0)

在python导入中如下所示:

from <path-to-file> import <file-name-or-class/method/variable>

因此,当您撰写import .spam时,它会查找.spam.py,而不是查找spam.py,而是查找.spam.py,以便您可以正确导入,如下所示:

from . import spam