【问题标题】:Python3 how do I import subdirectory file that imports subsubdirectory file?Python3如何导入导入子目录文件的子目录文件?
【发布时间】:2017-02-16 02:48:56
【问题描述】:

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

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

你能解释一下发生了什么吗?

【问题讨论】:

标签: python python-3.x module packages


【解决方案1】:

如果你想使用相对导入,你必须以包的方式运行脚本。

由于main_directory中没有__init__.py,所以包为subdirectory

cd ./main_directory/
python -m subdirectory.test
python -m subdirectory.subsubdirectory.test2

如果您希望main_directory 成为包名,则必须在main_directory 中添加__init__.py,然后运行脚本:

cd ./main_directory/../
python -m main_directory.subdirectory.test
python -m main_directory.subdirectory.subsubdirectory.test2

【讨论】:

    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2023-03-26
    相关资源
    最近更新 更多