sys.path.append() :
1、python本身不支持跨目录调用文件 2、该语句的目的是为了将父目录加入到sys.path (python的搜索模块的路径) 3、使得python可以导入父目录下的任何目录中的任何文件 4、是一个设定语句 5、当我们导入一个模块时:import xxx,默认情况下python解析器会搜索当前目录、已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中 6、sys.path 返回的是一个列表! 该路径已经添加到系统的环境变量了,当我们要添加自己的搜索目录时,可以通过列表的append()方法;对于模块和自己写的脚本不在同一个目录下,在脚本开头加sys.path.append():
例:
1、python在 执行 atm.py 脚本,脚本调用 setting.py 和main.py 模块。 2、由于调用的模块不在同级目录和同一文件下,直接调用会报错: ModuleNotFoundError: No module named ‘conf’ 3、跨目录调用文件,要在执行文件开头添加命令:sys.path.append(),将两个文件的父目录添加到sys.path列表中,即图中:Atm文件夹的目录的路径
import os
import sys
print (os.path.abspath(__file__))
print (os.path.dirname( os.path.abspath(__file__) ))
print (os.path.dirname(os.path.dirname( os.path.abspath(__file__) )))
BASE_DIR= os.path.dirname(os.path.dirname( os.path.abspath(__file__) ))
sys.path.append( BASE_DIR )
from conf import setting
from foo import main
setting
main.login()
os.path.abspath 与 os.path.dirname
print (os.path.abspath(__file__))
print (os.path.dirname( os.path.abspath(__file__) ))
print (os.path.dirname(os.path.dirname( os.path.abspath(__file__) )))
print (os.path.dirname(__file__))
print (os.path.dirname( os.path.dirname(__file__) ))
|