0、官方建议,总是优先使用绝对引用,只有在引用路径较为复杂导致引用代码很长时,才考虑使用相对引用。

绝对引用
优点是清晰且直接,可以很容易就确定引用文件位置;且即使当前文件的位置发生变化,导入语句仍然有效。
缺点是当引用路径较为复杂时,导入语句很长,如:
from package1.subpackage2.subpackage3.subpackage4.module5 import function6

相对引用
最直观的优点就是简洁,在包层次结构较为复杂时,相对引用能够借助于.以较短的代码实现快速的引用。
缺点是较为凌乱,在项目文件位置发生变更时,不易维护;此外,相对引用可读性较差。较难根据引用代码确定引用文件路径。
相对引用的限制:使用了相对引用的py文件,不能作为执行文件。需要在这个py路径之外的py文件调用。

1、Windows:引用文件的目录是以当前执行文件为根目录去搜索的。

    Linux:引用文件的目录是以终端中的打开的文件夹为根路径去搜索的。

2、其他文件内引用的相对路径文件可以使用项目根目录+相对路径的方式获得。

1、project_name = 'crop_and_angle_classifier'  # 设置工作项目名称
2、project_path = os.getcwd().split(project_name)[0] + project_name  #以此方式获得项目根目录
   备注:获取上一级目录的方式:os.path.dirname(BaseDir)
        或者__dir__ = pathlib.Path(os.path.abspath(__file__))
           sys.path.append(str(__dir__.parent.parent))
3、sys.path.append(project_path)  #将项目根目录添加进搜索路径
4、model_weight_path = project_path + "/weight/mobilenet_v3_large.pth" #在其他所有文件中采用这种方式获得所需文件的绝对路径


3、跨目录调用py文件里的方法也是 1、先将根目录添加进搜索路径   2、from 根目录下的文件 import 所需的方法


4、在编写代码时候,只需要先确定一个根目录,即project path,然后,其它文件里面的引用from xxx import xxx时候,都是改为从根目录开始的引用。但是这时候会出现引用的文件下面有红线,即找不到文件,而且你在这个文件内直接运行也会报错,这是因为你运行的文件没有将项目根目录加进去,所以这时候只需利用方法2,将项目根目录加进去就可以顺利运行啦。