Eclipse PyDev忽略__init__,导致未解决的模块导入错误

时间:2018-10-19 05:03:28

标签: python eclipse pydev

目前尚不清楚如何在git仓库中正确构造我们的PyDev项目/包,以使绝对导入工作为they should。这导致Eclipse抛出我不理解的“未解决的导入”错误。

当前,回购看起来像这样:

REPO/ [repo master]  # Set as source folder (PYTHONPATH)
    package_A/       # Set as source folder (PYTHONPATH)
       __init__.py   # from foo import some_func
       __main__.py   # Absolute import required
       foo.py        # some_func()
    package_B        # Set as source folder (PYTHONPATH)
       __init__.py
       __main__.py
       bar.py
__init__.py          # Empty

package_A/__init__.py看起来像这样:

from foo import some_func

现在我转到package_A/__main__.py,并想从some_func()导入foo

from foo import some_func       # works
from package_A import some_func # unresolved import error in Eclipse
# The latter case should work due to the initial import in __init__

根据this source,第二个选项应该起作用。它并不表示由于某些原因package_A/__init__.py的内容没有任何效果。我怎么了?

上述未解决的导入错误的根本原因是什么?

1 个答案:

答案 0 :(得分:1)

如果要导入package_A,则不应将其本身设置为源文件夹。

即:仅将REPO标记为源文件夹(这是应该在PYTHONPATH中唯一的条目)。

请注意,from foo import some_func在这种情况下将无法工作...因此,您可以编写绝对导入from package_A.foo import some_func或相对导入:from .foo import some_func