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