python默认导包搜索路径有三种:
-
当前工作路径文件夹
-
python安装目录和pip第三方包安装目录
-
当前项目的第三方包安装目录(如 当前项目名称\venv\lib\site-packages...)
可以采用sys.path查看
print(sys.path)
当我们采用pip去下载第三方包时会默认安装在当前项目的第三方包安装目录下,在python默认导包搜索路径内,因此直接导包即可,不需要额外操作,我们无需关心
当我们导入自定义的包时,只需要关心”将自定义包放在当前工作路径文件夹之下“,说白了我们在哪个目录下运行,就会在该目录下查找导入的自定义包,否则就会出现模块无法导入错误。
注意一个问题,当我们在编辑器上运行时的工作路径就是当前脚本所在的文件夹,因此只能导入当前文件夹下的其他类,无法跨包导入。为了解决这个问题,我们也可以使用sys.path.append()方法临时
添加导包搜索路径
sys.path
是一个列表 list ,它里面包含了已经添加到系统的环境变量路径。
当我们要添加自己的引用模块搜索目录时,可以通过列表 list 的 append()方法;这种方法是运行时修改,脚本运行后就会失效。
sys.path.append('..') # 代表添加当前路径的上一级目录 sys.path.append('..\..') sys.path.append('../..') # 代表当前位置得上两级的目录地址。
案例:
如我们使用命令行在c:\\Users\\v-williamqiu\\Desktop\\wx\\workspace\\PytestAutoTestFrameWork
运行c:\\Users\\v-williamqiu\\Desktop\\wx\\workspace\\PytestAutoTestFrameWork\\util
下的test.py,那么当前的工作路径为PytestAutoTestFrameWork
,此时我们在test.py导入PytestAutoTestFrameWork目录下的任何子文件夹下的包都可以被默认搜索到并导入
但是当我们直接在编辑器上运行时,则当前脚本所在文件夹就是工作路径/util,此时我们test.py导入util/之外的包就会报错