问题描述
最近在做一块自动化测试脚本的时候,把各功能写在不同的文件中,再进行import调用
文件结构如下:
即CLI.py和lib文件夹同目录,lib文件夹下方有4个py文件
其中,CLI.py会调用AutoCheck.py和MipsDasm.py,AutoCheck.py会调用同目录下的MyCompare.py
于是写法如下
#CLI.py
from lib.MipsDasm import *
from lib.AutoCheck import *
#AutoCheck.py
import MyCompare
看似没有问题,但是运行时便会报错
在网上查找了半天,使用的方法包括添加"_ _ init _ _.py",使用"sys.path.append",甚至还有修改setting.json(本人使用VSCode),但都不成功。
方法解决
后来在网上查找到了类似的提问,一个可行的解决方法是:
使用"from … import …" 语句
(给出参考网址:https://tieba.baidu.com/p/3368113163?red_tag=0976596496)
于是我修改AutoCheck.py为
#AutoCheck.py
from lib import MyCompare
再点击CLI.py,无相关报错,程序可运行
总结与反思
这次花费了将近2个小时在模块导入上,说明我还没有理解import 和 from import 的区别,有机会要好好研究一下。
最后简单总结一下Python自定义模块调用出错时的解决方案吧:
- 添加__init__.py,并使用诸如xxx.yyy(xxx为文件夹,yyy为模块名)的形式
- 使用sys.path.append(模块所在目录)
- 修改IDE相关设置(我没有成功,不做赘述)
- 注意from import 和import的区别(等我有时间去分析的时候会回来做补充)
希望我的文章对你有帮助