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環境變量即可,如下圖:(親測可用)