Windows下運行python腳本報錯“ImportError: No Module named ...”的解決方法


之前遇到一個問題,在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

解決方法:
方法很簡單,就是把模塊路徑提供給解釋器:

  1. (推薦) 把模塊路徑放到環境變量中作為全局變量(sys.path能掃描到)。
    添加PYTHONPATH = /path/to/your/module

  2. 顯式的在運行的腳本中添加
    把上面代碼中的第6, 7行的注釋去掉就是了,效果同上。

import sys
sys.path.append('/path/to/your/module')

做完這些后再運行就不會報錯了。

參考:

  1. http://stackoverflow.com/questions/15514593/importerror-no-module-named-when-trying-to-run-python-script
  2. http://stackoverflow.com/questions/8321130/python-module-import-issues-in-command-prompt


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM