Python 模块导入问题:不同位置的导入语句

Python modules import problem: import statement in different location

这是我的文件夹结构:

main.py
tools/
  sub1.py
  sub2.py

其中 main.py:

import tools.sub1
import tools.sub2

和sub1.py:

a = 'abc'

和sub2.py(直接import sub1不行,是不是因为我是从根目录运行ning main.py?):

import tools.sub1
print(tools.sub1)

here,我知道为了从main中正确调用sub1,sub2,我们必须在sub2中添加语句import tools.sub1,但是,如果我想单独运行 sub2,就会出现错误

Traceback (most recent call last):
  File "sub2.py", line 1, in <module>
    import tools.sub1 as sub1
ModuleNotFoundError: No module named 'tools'

所以,我的问题是 是否有可能直接 运行 sub2 单独,同时保持我们可以正确 运行 main.py 的当前设计?。提前致谢。

您可以 运行 sub2 使用 python -m tools.sub2

有关使用 -m https://docs.python.org/3/using/cmdline.html#cmdoption-m

的更多信息

您可以通过将 tools 设为 python 模块来实现。在您的工具目录中添加一个 __init__.py 文件(可以为空)将使 Python 将“工具”文件夹视为一个模块。然后,您可以使用 main.pysub2.py 引用 sub1

from tools import sub1