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

Eclipse PyDev ignores __init__, leading to unresolved module import error

尚不清楚如何在我们的 git 存储库中正确构建我们的 PyDev projects/packages,以便绝对导入计算为 they should。这导致 Eclipse 抛出一个我不理解的 "unresolved import" 错误。

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

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 并想从 foo 导入 some_func():

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 的内容没有任何效果。我的错误是什么?

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

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

即:只有 REPO 应标记为源文件夹(这是 PYTHONPATH 中唯一应包含的条目)。

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