导入错误:没有命名模块<parent dir>

问题描述 投票:0回答:2

我正在尝试通过Python学习编程,所以如果这是一个简单得荒谬的问题,我提前道歉。

我试图简化我复杂的目录结构并利用Python的一些代码重用功能,我遇到了对我来说莫名其妙的

ImportError
错误。在过去的几个小时里,我一直在阅读有关 Python 的
import
module
package
功能(herehereherehere 等),但我仍然无法解决这个(看似)简单的错误。

问题就在这里。

我有一个目录(

dir
),其中包含一个子目录(
subdir
)。每个目录都包含一些文件。因此,我的整体目录结构如下所示:

dir/
    __init__.py
    draw_lib.py
    subdir/
        __init___.py
        drawing.py

在我的

drawing.py
文件中,我尝试使用以下行导入
draw_lib.py
from dir import daw_lib.py
。结果是
ImportError: No module named dir
。谁能快速解释一下为什么我的
drawing.py
文件找不到我的
dir
目录?感谢您的帮助。我完全迷失了,真的很想一劳永逸地改进我的代码重用和目录结构。

python python-2.7 syntax directory code-reuse
2个回答
8
投票

您最初正在执行draw_lib.py。所以整个程序的“根目录”都是 /

然后,当您在 drawing.py 中尝试“from dir import draw_lib.py”时,它将不起作用,因为根目录仍然是 / 而不是 dir/

import draw_lib

将在drawing.py中工作。

示例:

/
    __init__.py
    main.py
    test/
        __init___.py
        case.py

main.py 中,输入:

import test.case

print 'main.py'

if __name__ == "__main__":
        test.case.test()

test/case.py 中,输入:

import main

def test():
        print 'case.py'

我的输出:

main.py
main.py
case.py

如您所见,我从嵌套文件导入了 main.py。你会看到 main.py 两次。初次启动一次,第二次导入case.py.


0
投票

供参考,请参阅此链接, https://askubuntu.com/a/1163934/1748542

只需将链接答案中提到的代码行添加到根 init.py 或 main.py 或任何此类文件。 它应该像魅力一样起作用

© www.soinside.com 2019 - 2024. All rights reserved.