问题
在编写好脚本后,我们通常会部署到jenkins自动化运行,这就需要用命令行去执行脚本,但当本地调试时会遇到运行失败的情况,通常报错都会是:ModuleNotFoundError: No module named 'first'
明明界面化运行是成功的,为什么会识别不到模块呢?
遇到这个问题的原因通常是由于界面化运行的时候,编译器会将运行的一些配置自动添加上去,包括项目的根路径,而命令行运行的时候就没有这些配置。
解决
解决方案有两种:
- 在运行失败的目录上方添加下面的代码(注意,要在报错的导包之前加)。
dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(dir_path)
- 如果第一个方法没办法解决,那就需要去打印一下
sys.path
,看一下是不是缺少项目根路径、报错的模块路径,如果缺少的话,就使用sys.path.append()
添加进去,再用命令行执行即可。