当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1.当前目录;
2.如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录;
3.如果都找不到,Python会察看默认路径。Linux下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
在实际开发中,默认包含了当前目录为搜索路径,所以,当前目录下的模块和子模块均可以正常访问。但是若一个模块需要import平级的不同目录的模块,或者上级目录里面的模块,就可以通过修改path来实现。修改path的方式一般可采用如下两种方式:
(1)通过对sys.path进行动态路径的添加:
sys.path里面包含了import导入时进行搜索的路径:
一般可以对当前项目如下操作:
获取当前文件路径:
Path(__file__).resolve(strict=True)
获取当前文件的父目录:
Path(__file__).resolve(strict=True).parent
获取当前文件的父目录的父目录:
Path(__file__).resolve(strict=True).parent.parent
…
sys.path添加路径:
sys.path.append('DIR的字符串')
(2)添加系统环境变量PYTHONPATH,在这个环境变量中输入相关的路径,不同的路径之间用逗号分开,路径将会自动加入到sys.path中。