1. 程式人生 > >Python模組匯入錯誤分析

Python模組匯入錯誤分析

分享最近有一次使用Python導模組時的錯誤:


1、問題產生 最近筆者在練習爬蟲的過程中,得知有一個模組叫做builtwith,其中有個parse的方法可以用來檢查網站構建的技術型別,於是直接用pip安裝了此模組: pip install builtwith。 然後在匯入此模組的過程中(import builtwith),始終無法成功,提示資訊如下:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python35\lib\site-packages\builtwith\__init__.py", line 43
    except Exception, e:
                    ^
SyntaxError: invalid syntax
這時我們可以發現,這個模組是安裝成功的,在~\Python35\lib\site-packages\目錄下面,並且提示了__init__.py檔案的43行有問題。我們可以開啟此檔案看一看,然而發現這裡面用到了urllib2的模組。
    if None in (headers, html):
        try:
            request = urllib2.Request(url, None, {'User-Agent': user_agent})
            if html:
                # already have HTML so just need to make HEAD request for headers
                request.get_method = lambda : 'HEAD'
            response = urllib2.urlopen(request)
            if headers is None:
                headers = response.headers
            if html is None:
                html = response.read()
        except Exception, e:
            print 'Error:', e
            request = None

於是,通過檢視文件,可以知道python 3.x中urllib庫和urilib2庫合併成了urllib庫,因此可以基本可以確定此問題就是這樣產生的。

2、問題解決

這樣的一個問題,最直觀的解決方式也許是直接換成Python2.X的版本來執行這個指令碼,以達到正確使用builtwith這個我們需要的模組。但是如果我們的專案裡面如果又需要使用Python3.X中的模組呢?:)