目前尚不清楚如何在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
的内容没有任何效果。我怎么了?
上述未解决的导入错误的根本原因是什么?
答案 0 :(得分:1)
如果要导入package_A
,则不应将其本身设置为源文件夹。
即:仅将REPO
标记为源文件夹(这是应该在PYTHONPATH中唯一的条目)。
请注意,from foo import some_func
在这种情况下将无法工作...因此,您可以编写绝对导入from package_A.foo import some_func
或相对导入:from .foo import some_func
。