所以我试图从导入其子包的包中导入一个模块。以下是示例代码:
from subsubdirectory import test2
在这种情况下,如果我改变
from .subsubdirectory import test2
到
ModuleNotFoundError: No module named '__main__.subsubdirectory'; '__main__' is not a package
它起作用,因为我猜它的直接路径? 但是,当我移动到我的子目录并运行python3 test.py时,它将抛出错误:
{{1}}
你能解释一下发生了什么吗?
答案 0 :(得分:0)
如果要使用相对导入,则必须以包的方式运行脚本。
由于__init__.py
中没有main_directory
,因此包subdirectory
cd ./main_directory/
python -m subdirectory.test
python -m subdirectory.subsubdirectory.test2
如果您希望main_directory
成为软件包名称,则必须在__init__.py
中添加main_directory
,然后运行脚本:
cd ./main_directory/../
python -m main_directory.subdirectory.test
python -m main_directory.subdirectory.subsubdirectory.test2