我一直在使用 PyCharm 开发一个子模块以放入其他几个项目中。我有一个包含单元测试的 Tests 目录,我想从 PyCharm 运行它们,但是当我测试任何包含相对导入的代码时,我得到:
“ValueError:尝试相对导入超出顶级包”
我的结构大致是:
A
____init____.py
...
B
____init____.py
...
测试
____init____.py
...
我在 B 模块中测试使用相对导入来导入 A 的函数:
from ..A import some_fn
这个线程在这里pycharm 和 unittesting - structuring project references 将测试目录标记为这样,但是当我右键单击它时,我只能选择将其标记为没有效果的源根目录。
我也不能真正从相对导入更改为绝对导入,因为它会破坏我在其他项目中将其用作子模块的能力。任何有关如何解决此问题的建议将不胜感激。
更新:我也遇到了这个线程如何在 Python 模块中正确使用相对或绝对导入?而且我不是该解决方案的忠实拥护者(我不希望在 try/except 块中导入镜像),但它确实在一定程度上解决了问题。我仍然希望有一个更优雅的解决方案,但如果没有,那确实可以解决错误。