No module named 'urllib.request'; 'urllib' is not a package
阿新 • • 發佈:2018-12-21
想學爬蟲urllib的設定代理伺服器,於是把之前跳過沒學的urllib撿起來,敲了段簡單的程式碼,如下
import urllib.request url = "http://www.baidu.com" data = urllib.request.urlopen(url).read() data = data.decode('UTF-8') print(data)
然而執行後總是報錯:
Traceback (most recent call last): File "urllib.py", line 1, in <module> import urllib.request File"F:\python\urllib.py", line 1, in <module> import urllib.request ImportError: No module named 'urllib.request'; 'urllib' is not a package
嘗試過用 from urllib import request,pip install urllib(想想好傻,urllib是python內建的庫)
還是同樣問題、儲存py檔案之後執行就提示 ImportError: No module named request。
但在python shell裡面執行就正常。
多方查詢,發現是個太傻x的錯誤。
原來是我的檔案命名的問題。
系統搜尋模組的優先順序是:程式主目錄,然後是系統環境變數定義的路徑,然後才是標準庫目錄。 如果按這個順序找到了,當然就不再向下找了。因為檔名正好是urllib,本意想匯入標準庫目錄下的urllib,結果把自己的當前檔案匯入了。
反思:
最開始在stackoverflow查到了,但看到問題背景是2.7版本的,就沒繼續往下看,堅定的認為是urllib的應用方法不對,認為不是3.6就沒有參考價值。
跟頭摔得慘,要長記性,1.任何地方都可能出錯誤 2.python2.7 和 3.x 程式碼有不同處,但出錯問題原因可能一樣。