我的相对进口货停止了,我做了很多尝试。我真的很想使用相对导入,但它们似乎对我不起作用。
我的项目看起来像这样:
package/
__init__.py
subpackage1/
__init__.py
module1.py
module2.py
tests/
__init__.py
test_module1.py
因此,当我运行test_module1时,如果使用from .module2 import foo in module1
,它将不起作用。但是,如果我使用from subpackage1.module2 import foo
,它将起作用。
我得到的错误是ImportError: attempted relative import with no known parent package
。
我尝试过的:
将子包标记为Pycharm中的根源。一次又一次地添加__init__.py
。我研究了各种stackoverflow问题,并尝试了许多解决方案,但是它们没有用。他们中的大多数人都说我需要一个init。
当前软件包被标记为源根,您有什么建议吗?我将永远感激不尽。
我想出了问题。我实际上不是从test_module1.py运行的。我从module1运行,这导致名称成为主要名称,从而造成了问题。因此,当文件从其他位置运行时,相对导入有效。