Python项目直接在Pycharm运行成功没有任何问题,但是命令行运行的时候总是会提示 ModuleNotFoundError: No module named 'xxx'
目录结构:
其中case包下的各个用例会调用common/conf/甚至data/case包下的py文件中的内容,这时候命令行运行就会出现找不到module的问题。
这是因为你的py脚本里面有引用其他模块下的py文件,而Python在启动解释器(Interpreter)的时候不只会导入环境变量中sys.path发现的模块,还会导入当前工作目录下的模块。当你在IDLE中启动解释器时,当前的工作目录就是项目目录,能顺利调用同项目中的模块;但是当你通过命令行启动时,当前工作目录为你启动解释器时所在的目录(即C盘的安装目录),如果当时的位置不是项目目录,那么项目目录中的模块就不会被找到
解决办法:
要让程序能正常找到相应目录,势必要通过外部的手段将该路径添加进去,首先想到的就是添加环境变量,只要是环境变量中有配置对应的 path ,在命令窗口运行的程序都会到相应的 path中一一去查找,直到找到为止,可以添加到系统原生的path里面,为有利于区分,额外添加一个 PYTHONPATH 的环境变量,将其它需要手动添加的路径全部放到该环境变量里面,添加的原则是,要导入哪个包,只要将该包的上一层路径全部添加至环境变量中。比如我这里 config 包是在 performance这一层目录,所以我就只将到Performance这绝对目录添加到 PYTHONPATH环境变量即可,如下图:(亲测可用)