图形化运行成功,命令行运行不成功

问题

在编写好脚本后,我们通常会部署到jenkins自动化运行,这就需要用命令行去执行脚本,但当本地调试时会遇到运行失败的情况,通常报错都会是:ModuleNotFoundError: No module named 'first'

明明界面化运行是成功的,为什么会识别不到模块呢?

遇到这个问题的原因通常是由于界面化运行的时候,编译器会将运行的一些配置自动添加上去,包括项目的根路径,而命令行运行的时候就没有这些配置。

解决

解决方案有两种:

  1. 在运行失败的目录上方添加下面的代码(注意,要在报错的导包之前加)。
dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(dir_path)

  1. 如果第一个方法没办法解决,那就需要去打印一下sys.path,看一下是不是缺少项目根路径、报错的模块路径,如果缺少的话,就使用sys.path.append()添加进去,再用命令行执行即可。