在Python-import导入上级目录文件中,作者以如下目录格式为例,详细说明了python如何导入上级、同级、下级以及隔壁文件夹的文件。
-- dir0
| file1.py
| file2.py
| dir3
| file3.py
| dir4
| file4.py
但是,这些方法都要以运行脚本的位置为中心,来计算其他模块的相对导入方式。我们在实际应用中,往往是各个子目录的文件之间相互调用,而我们在根目录运行子目录的文件。
例如,dir4下的file4.py要调用dir3的file3.py,按照上面的参考链接所说,可以使用sys.path.append()方法来导入。
import sys
sys.path.append("..")
from dir3 import file3
这种方法,当你在dir4文件夹中运行脚本file4.py时是可以成功的。但是,如果你在dir0文件夹运行dir4/file4.py时,就会报错。
ModuleNotFoundError: No module named 'dir3'
因为你现在所处的目录位置是dir0,调用sys.path.append()就跑到更上层目录去了。
既然如此,那我们就直接导入dir0所在的目录。
import sys
sys.path.append(".")
sys.path.append("..")
from dir3 import file3
通过这种方式,可以在dir0文件夹运行成功,也可以在dir4文件夹运行成功。