Python解釋器運行時會導入當前工作目錄下的模塊。當你在Pycharm中啟動解釋器時,當前的工作目錄是項目根目錄,但是當你通過命令行啟動時,當前工作目錄為你運行python文件時所在的目錄。如果當時的位置不是項目目錄,那么項目目錄中的模塊就不會被找到。
例如:
我的項目目錄如下,運行項目需要執行 excute.py 文件
當在Pycharm上運行時,我們導入模塊需要這樣:
from main.http.xxx import xxx from main.tcp.xxx import xxx
但是,當我們使用命令行進入main目錄執行 python excute.py 時,使用以上的導入方式就會出現 ModuleNotFoundError,就是找不到 main 這個模塊。
from http.xxx import xxx from tcp.xxx import xxx
因為此時添加到環境變量的路徑已經由 xxx/xxx/killer/ 變為 xxx/xxx/killer/main/