Python3如何导入导入子目录文件的子目录文件?

TYN

所以我试图从导入其子包的包中导入一个模块。这是示例代码:

main_directory
    - main.py
    subdirectory
        - __init__.py
        - test.py
        subsubdirectory
            - __init__.py
            - test2.py

main.py:
    from subdirectory import test
    test.foo1()

test.py:
    from subsubdirectory import test2
    def foo1():
        print("foo1")
        test2.foo2()

test2.py:
    def foo2():
        print("foo2")

在这种情况下,如果我改变

from subsubdirectory import test2

from .subsubdirectory import test2

它有效,因为我猜这是直接路径?但是当我移到子目录并运行python3 test.py时,它将引发错误:

ModuleNotFoundError: No module named '__main__.subsubdirectory'; '__main__' is not a package

你能解释发生了什么吗?

帮派

如果要使用相对导入,则必须以打包方式运行脚本。

由于没有__init__.pyin 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档