我几乎查看了有关相对导入的每个链接,尤其是那些与顶级包有关的链接,但我仍然在让我的相对导入代码正常工作时遇到很多麻烦。作为参考,我使用的是 Python 3.6。
我有一个要运行的测试目录,隔离在他们自己的目录中,tests。我想将所有模块包导入到一个名为 InputTests.py 的文件中。这是我的项目目录的格式。
在 InputTests.py 中,我尝试以这种方式导入模块:
from .. import modules
我得到错误:
File "/Users/wfehrnstrom/Desktop/meeting_minutes/tests/InputTests.py",
line 2, in <module>
from .. import modules
ValueError: attempted relative import beyond top-level package<code>
但是,我使用的是命令:python -m tests.InputTests
,它应该告诉解释器从我的顶级目录运行所有内容。所以我想我的问题是,考虑到我是从上面的包中运行它,为什么我的相对导入语句不起作用。这个堆栈溢出帖子似乎详细说明了我需要什么,但是他们使用 -m 运行的解决方案对我不起作用:如何在 Python 中进行相对导入?
此外,在这个堆栈溢出帖子中似乎有一个矛盾:Relative importing modules from parent folder subfolder
后一篇文章似乎暗示了 .. 和 . 的上下文含义。不要根据您执行 Python 命令的位置进行更改,但是前者表示确实如此。这让我非常困惑。任何人都可以澄清相对进口并解决这种差异吗?谢谢你。