摘要:本文从实际案例出发,详细地讲述了python中相对导入和绝对导入可能出现的问题以及对于相对导入和绝对...
前言
在运行python项目的时候,你是否遇到过这样的问题(ModuleNotFoundError):
又或者是这样的问题(attempted relative import beyond top-level package):
其实这些问题都涉及到了python的导入机制,关于第一类问题,可以阅读我的这篇文章-python的import机制当然我建议你看完import机制之后再回过头将本篇文章完整看完,相信我,你会有不一样的收获。
实际案例
为了能更直观地理解,我们创建一个Import的python项目,并在其中创建目录结构如下:
Import
|--A
|--D
|--d.py
|--E
|--e.py
|--a.py
|--B
|--b.py
|--C
|--c.py
|--main.py # 项目入口
其中A,B,C,D均为目录,a.py, b.py, c.py, d.py 都是一个简单python文件,每个文件中有一个对应的hello函数,用于打印对应的hello信息,例如a.py 中:
其他的就是将a换成对应字母。
我们从实际项目开发出发,一般项目开发中有多级目录,我们已经实现了,在项目本身根目录下会有一个入口文件(main.py),他用于调用其他模块的文件达到执行整个项目的目的。
项目根目录下运行
我们在main.py中写入如下代码,并运行查看结果(为了体现ide的特殊之处,后面的运行结果如果不一样,我会展示ide和终端运行两种结果,原因你在看过python的import机制就会明白):
"""
项