Windows下執行python指令碼報錯“ImportError: No Module named ...”的解決方法
阿新 • • 發佈:2018-10-31
之前遇到一個問題,在Pycharm或IPython之類的IDE上執行指令碼正常,但是直接執行或cmd命令列執行的時候報了模組未能找到的
誤——ImportError: No Module named ...
。 這是啥情況?
Python在啟動直譯器(Interpreter)的時候不光會匯入環境變數中sys.path
發現的模組,還會匯入當前工作目錄下的模組。當你在IDE中啟動直譯器時,當前的工作目錄就是專案目錄,能順利呼叫同項目中的模組;但是當你通過命令列啟動時,當前工作目錄為你啟動直譯器時所在的目錄,如果當時的位置不是專案目錄,那麼專案目錄中的模組就不會被找到,因此執行的時候報錯:ImportError: No Module named ...
具體例子如下:
在上面的專案中有如下指令碼,執行trainingset_selection.py需要呼叫另一個目錄下的connect_db.py。如果在命令列中執行的時候會出現以下錯誤:
trainingset_selection.py的前8行如下:
__author__ = "Arkenstone"
import os
import sys
# get current working directory -- Better to set the PYTHONPATH env variable
# current_working_directory = "C:\Users\username\PycharmProjects\projectName"
# sys.path.append(current_working_directory)
from connectDB.connect_db import extractDataFromDB
解決方法:
方法很簡單,就是把模組路徑提供給直譯器:
-
(推薦) 把模組路徑放到環境變數中作為全域性變數(sys.path能掃描到)。
新增PYTHONPATH = /path/to/your/module -
顯式的在執行的指令碼中新增
把上面程式碼中的第6, 7行的註釋去掉就是了,效果同上。import sys sys.path.append('/path/to/your/module'
做完這些後再執行就不會報錯了。