问题描述
我具有以下文件结构:
/main/main.py
/main/sub/__init__.py
/main/sub/subtools.py
在sub/__init__.py
中,我全部从subtools.py(from subtools import *
)导入。
然后在main.py
中导入sub(import sub
)
但是,当我这样做时,会收到错误no module named 'subtools'
,但是如果单独运行 init .py,我不会收到该错误。
我该如何解决?
解决方法
对于工作目录/main
:
您需要在from sub.subtools import *
中包含/main/sub/__init__.py
,需要指定完整的“命名空间” 。
或者,使用相对引用:from .subtools import *
然后一切正常。
说明:
重点是,始终相对于当前工作目录(加上PATH中的所有目录)进行此导入,如果是相对引用,则采用它所在的目录。
或者,一种变通方法,但不是一种好的做法,是使用/main/sub
目录扩展PATH变量,然后from subtools import *
就可以了。 (在某些情况下,这是必要的解决方案。)