关于python:ImportError:没有模块命名< parent dir>

ImportError: No Module Named <parent dir>

我正试图通过python学习编程,所以如果这是一个非常简单的问题,我提前道歉。

我试图简化我复杂的目录结构,利用一些Python的代码重用特性,我遇到了一个难以解释的ImportError错误。在过去的几个小时里,我一直在阅读关于python的importmodulepackage功能(这里、这里、这里和这里等),但我仍然无法解决这个(似乎)简单的错误。

这就是问题所在。

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

1
2
3
4
5
6
dir/
    __init__.py
    draw_lib.py
    subdir/
        __init___.py
        drawing.py

在我的drawing.py文件中,我试图用以下行导入draw_lib.pyfrom dir import daw_lib.py。它产生一个ImportError: No module named dir。有人能快速解释为什么我的drawing.py文件找不到我的dir目录吗?谢谢你的帮助。我完全迷路了,我真的很想一次性地改进我的代码重用和目录结构。


您开始执行draw-lib.py。所以"根目录"是/贯穿整个程序。

然后,当您在drawing.py中尝试"from dir import draw_lib.py"时,它将无法工作,因为根目录仍然是/而不是dir/。

1
import draw_lib

将在drawing.py中工作。

例子:

1
2
3
4
5
6
/
    __init__.py
    main.py
    test/
        __init___.py
        case.py

在main.py中,输入:

1
2
3
4
5
6
import test.case

print 'main.py'

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

在test/case.py中,输入:

1
2
3
4
import main

def test():
        print 'case.py'

我的输出:

1
2
3
main.py
main.py
case.py

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