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



这是我的文件夹结构:

main.py
tools/
sub1.py
sub2.py

其中main.py:

import tools.sub1
import tools.sub2

和sub1py:

a = 'abc'

和sub2.py(直接导入sub1不起作用,是因为我从根目录运行main.py吗?(:

import tools.sub1
print(tools.sub1)

从这里开始,我知道为了正确地从main调用sub1、sub2,我们必须在sub2中添加导入工具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。提前谢谢。

您可以使用python -m tools.sub2运行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

最新更新