首页 > 解决方案 > 相对导入模块

问题描述

对于一个项目:

    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,它识别错误,如果这是相关的。)

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

标签: pythonpython-3.x

解决方案


在python中导入如下:

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

因此,当您编写import .spam它时,它会寻找.spam.py手段而不是寻找spam.py它正在寻找,.spam.py因此您可以正确导入它,如下所示:

from . import spam

推荐阅读