ImportError:没有名为<父目录>的模块
我正在通过学习Python来掌握编程,所以如果这个问题太简单,我先说声抱歉。
我想简化我复杂的文件夹结构,并利用Python的一些代码重用功能,但我遇到了一个对我来说难以理解的ImportError
错误。这几小时我一直在阅读关于Python的import
、module
和package
的资料(比如这里、这里、这里和这里等),但我还是无法解决这个(看起来)简单的错误。
问题是这样的。
我有一个文件夹(dir
),里面有一个子文件夹(subdir
)。每个文件夹里都有一些文件。所以,我的整体文件夹结构看起来是这样的:
dir/
__init__.py
draw_lib.py
subdir/
__init___.py
drawing.py
在我的drawing.py
文件中,我尝试用以下代码导入draw_lib.py
:from dir import draw_lib.py
。结果出现了ImportError: No module named dir
。有没有人能简单解释一下,为什么我的drawing.py
文件找不到dir
这个文件夹?非常感谢任何帮助。我完全搞不清楚,真的很想一次性改善我的代码重用和文件夹结构。
2 个回答
如果需要参考,可以查看这个链接,
https://askubuntu.com/a/1163934/1748542
只需要把链接中提到的代码行添加到根目录下的 main.py
、xyz.py
或者其他类似的文件中就可以了。
这样应该就能顺利运行了。
比如:
parentdir
|
__init__.py
main.py
|
subdir
|
__init__.py
a.py
main.py
import os, sys
#Following lines are for assigning parent directory dynamically.
dir_path = os.path.dirname(os.path.realpath(__file__))
parent_dir_path = os.path.abspath(os.path.join(dir_path, os.pardir))
sys.path.insert(0, parent_dir_path)
from parentdir.subdir import a
完成了,你的问题解决了。
你最开始运行的是 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 中导入时。