1. 程式人生 > >全網友遇到的Mac安裝Scrapy框架所有問題

全網友遇到的Mac安裝Scrapy框架所有問題

每次配什麼環境算是能遇到所有的問題,參考一個blog配置下來並將新問題羅列如下:

準備工作

安裝開始前,你需要知道的幾點注意事項和工具:

  • MAC OS是自帶python 2.7的,而目前Scrapy也只是在python 2.7版本較為穩定,所以你不需要再安裝或者配置python環境了,只需要按步驟安裝好Scrapy就好了。

  • 作為一個想在Mac上用Scrapy的人,我覺得你應該是知道Homebrew和wget的吧。。。好吧如果你不知道那也沒有關係,請移步Homebrew

  • 安裝好Homebrew,wget並學會使用(很簡單的)。

  • 如果你是開發人員,那麼別墨跡了,把Xcode裝上吧。如果你不是,那裝不裝倒是無所謂。

好了,到現在為止我們已經做完了準備工作,接下來我們就開始進入正篇環節——Scrapy安裝。


安裝pip工具包

這個必須安裝,是基於python的管理工具包。在這裡就不多廢話了,既然知道Scrapy,沒理由不知道pip。我們已經裝過了wget,現在我們就用它來獲取pip,很簡單,開啟終端,下面這行命令敲進去執行。

wget https://bootstrap.pypa.io/get-pip.py

接下來安裝pip:

sudo python get-pip.py

搞定。

pip源修改

注意,這一步非常重要,很多人在安裝Scrapy不成功的第二大原因(稍後再說第一大)就是這個,一定要改啊。博主一想起這個就是淚牛滿面啊,折騰的時間大部分都浪費在這裡了。

安裝完成pip之後,預設的時官方源可能會被我大天朝的長城K.O.掉,我們需要對pip源進行修改,使用咱們國內的源。

首先建立配置檔案,預設情況下Mac端好像是沒有pip的配置檔案的,我們需要自行建立。開啟終端,在HOME下建立.pip目錄:

mkdir .pip

接下來建立配置檔案pip.conf:

touch pip.conf

接下來編輯配置檔案,隨便使用什麼編輯器開啟剛剛新建的pip.conf檔案,輸入以下兩行:

[global]
index-url = http://pypi.mirrors.ustc.edu.cn/simple

輸入完成後儲存退出即可,至此,pip源就修改完了,可以進行下一步了。

有一點要說明一下,就是pip源的問題,國內目前的pipy映象主要有以下幾個:

http://pypi.douban.com/ 豆瓣

http://pypi.hustunique.com/ 華中理工大學

http://pypi.sdutlinux.org/ 山東理工大學

http://pypi.mirrors.ustc.edu.cn/ 中國科學技術大學

http://pypi.v2ex.com/ V2EX社群

大家可以看自己需要選擇,用法都一樣,只需要替換配置檔案當中index-url的值即可。但不要忘記後面的/simple目錄!

Command Line Tools安裝

pip在安裝Scrapy模組時依賴lxml模組,而pip的預設行為是下載原始碼進行編譯。很多小夥伴在MAC終端中並沒有指定C編譯器的環境變數啊,找不到include資料夾啊,找不到xmlversion.h檔案啊等等問題。木有錯,這就是大部分夥子裝Scrapy遇到的最大問題!

為了防患於未然,我們先不要著急安裝Scrapy,pip源修改完成之後,我們要先回到HOME進行Command Line Tools安裝,終端下執行

xcode-select —install

不管你有沒有裝Xcode,接下來你只要按照提示一直點確定就好了。

安裝Scrapy

現在做完以上幾步之後,我們只需要執行

sudo pip install Scrapy

就可以了,如果沒有lxml或者OpenSSL,pip會自動幫你裝上的。

接下來就是等待安裝完成了。

解決Found exisiting installation :six 1.4.1問題

輸入  sudo pip install scrapy之後報了這個錯誤,原因是蘋果預先安裝的six庫出於安全原因被設定為sudo也不可修改的,依賴高版本的庫就需要更新six,但是沒有這個許可權就會報錯,解決方案:

將程式碼改為:sudo pip install Scrapy --upgrade --ignore-installed six

解決ImportError:cannot import name xmlrpc_client問題

安裝完成之後,終端下輸入如下命令檢視Scrapy版本並驗證是否成功,卻發現出了問題,提示

ImportError:cannot import name xmlrpc_client

網上無論如何也找不到解決方案,無奈之下翻牆Google,找到了某外國友人的解決方案。至此,問題告破。

終端下執行

sudo rm -rf. /Library/Python/2.7/site-packages/six*
sudo rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six*
sudo pip install six

解除安裝掉six並重裝,再次檢視Scrapy版本,搞定。

解決OSError:[Errno 1] Operation not permitted問題


在終端執行這段程式碼的時候,會報一個許可權的錯誤  OSError: [Errno 1] Operation not permitted 
sudo rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six*
這是因為由於El Capitan引入了SIP機制(System Integrity Protection), 預設下系統啟用SIP系統完整性保護機制,無論是對於硬碟還是執行時的程序限制對系統目錄的寫操作。 這就是這個OSError: [Errno 1] Operation not permitted 錯誤的原因,解決辦法就是取消SIP機制,具體做法是:
重啟電腦,按住Command+R(直到出現蘋果標誌)進入Recovery Mode(恢復模式),左上角選單裡找到實用工具 -> 終端輸入csrutil disable回車重啟Mac即可如果想重新啟動SIP機制重複上述步驟改用csrutil enable即可
我們現在再看看sip的狀態,
$ csrutil status
System Integrity Protection status: disabled.
這樣再安裝時再也不會提示無法寫入的許可權提示了

解決AttributeError:'module' object has no attribute 'OP_NO_TLSv1_1'問題

原因是 twisted版本太高了,預設是安裝最高版本,17.1.0  比如 pip install twisted==13.1.0沒有問題的

作者:神獸gcc
連結:http://www.jianshu.com/p/a03aab073a35
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處