1. 程式人生 > >No module named 'urllib.request'; 'urllib' is not a package

No module named 'urllib.request'; 'urllib' is not a package

想學爬蟲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 程式碼有不同處,但出錯問題原因可能一樣。