从grandparent的兄弟目录导入类

时间:2018-05-15 21:11:40

标签: python

我知道有很多关于Python相对导入的问题,但我无法找到任何有用的答案。所以,我希望Stack Overflow Python社区可以帮助我找出解决问题的方法。

我有以下目录结构:

project
    | - src
        | - module_1
            | - module_1
                | - interesting.py
            | - __init__.py
        | - module_2
            | - module_2
                | - importhere.py

interesting.py模块中有一些类要导入importhere.py模块。但是,不知怎的,Pycharm不允许我这样做!

同样的Pythonic解决方案是什么?!

2 个答案:

答案 0 :(得分:3)

如果您使用的是python3,则可以将空__init__.py添加到包含文件的每个目录中,这应该有效:

# Scary mess though, counting "." is not funny. 
from ....module_1.module_1 import interesting

但我不会称之为pythonic。这很难看。 pythonic方式是创建一个包。

即。像这样的文件夹结构:

project
    | - src
        | - module_1
                | - module_1
                        | - __init__.py
                        | - interesting.py
                | - __init__.py <-- why do you have this one?
        | - module_2
                | - module_2
                        | - __init__.py
                        | - importhere.py

答案 1 :(得分:1)

<啊>啊,我想出了洗液

project
    | - src
        | - __init__.py
        | - module_1
                | - module_1
                        | - interesting.py
                | - __init__.py
        | - __init__.py
        | - module_2
                | - __init__.py
                | - module_2
                        | - importhere.py
        | - __init__.py

但是,为src目录设置 init .py真的是一个很好的方法吗?