自动化随笔
-
自建module导入
导入自建module常见两种场景:同级目录下module导入、不同目录的module导入
同级目录导入:
即当前文件与自定义模块在同一父目录下;自定义module可以是文件,也可以是包(带__init__py的文件夹)
如上图所示,可直接使用 import module_name 导入
不同目录导入:
无法直接使用 import module_name ,会返回无法找到module的错误
目前了解到三种方法进行导入:
1、当前文件的父级目录会自动添加至系统路径中,如下图使用 sys.path:
若自定义模块在此目录下,如common,或多级子目录下,如common/test/test.py,可使用from...import...进行导入,具体见上图
2、在不同父目录下,无法使用上一种方法,如下面的目录
#|-- common #| |-- test
#| |-- test_module.py
#| #|-- testCase #| |-- main.py
若要在main.py中导入test_module.py 或其中的方法,需先将目标模块的上级目录添加到系统路径中
简单总结以上两种方法,实际上均是将自定义模块的某一级父目录添加至系统路径;再以该路径为起点往下级寻找 (from),直至最近的一级父目录,再进行 import module_name
3、使用pth文件配置自定义模块的路径
参考:https://blog.csdn.net/pwc1996/article/details/52577148
其他注意问题:
1、导入时符号 “.” 的左边必须是文件夹,即from dir.dir.dir import module ,或者from dir.dir.file import func 的形式,参考:https://www.cnblogs.com/tingguoguoyo/p/10834393.html
2、多层导入问题,如B导入A,C导入B并引用A的内容,这种情况下无法引用A的内容,参考:https://blog.csdn.net/gvfdbdf/article/details/52084144
3、相对路径导入,参考:http://stackoverflow.com/questions/16981921/relative-imports-in-python-3
4、自定义模块中若使用了路径,如 open(path) 或其他方法,path尽量使用绝对路径,避免导入后无法找到相关路径
-------------------------------------------------------2021-12-06------------------------------------------------------
模块导入参考:python模块化包管理与import机制