1. 程式人生 > >windows下使用pip安裝模塊發生“failed with error code 1”的解決方法

windows下使用pip安裝模塊發生“failed with error code 1”的解決方法

pil blank local 出現 自己 comm exec app ted

win不愧是最爛的開發平臺,在安裝第三方模塊時經常出現些幺蛾子。
今天在window中使用python3自帶的pip安裝scrapy時,出錯,錯誤代碼如下:

Command "f:\python\python36\python.exe -u -c "import setuptools, tokenize;__file__=‘C:\\Users\\WONDER~1\\AppData\\Local\\Temp\\pip-build-90gvzc6m\\Twisted\\setup.py‘;f=getattr(tokenize, ‘open‘, open)(__file__);code=f.read().replace(‘\r\n‘, ‘\n‘);f.close();exec(compile(code, __file__, ‘exec‘))" install --record C:\Users\WONDER~1\AppData\Local\Temp\pip-2xl1_rnm-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\WONDER~1\AppData\Local\Temp\pip-build-90gvzc6m\Twisted\
  • 1

關鍵詞是:failed with error code 1
事實上,這個錯誤碼之前在安裝pandas時也出現過,當時不了了之了。
現今推測出現這個錯誤代碼的原因有不少:

  1. pip版本過低
  2. 未安裝wheel模塊。雖說wheel模塊在安裝scrapy時應該會被自動安裝。
  3. 要安裝的模塊不支持當前python版本。這個問題在python3上尤為明顯。(scrapy就是不能完美支持3)
  4. 電腦的名稱含有中文或其他稀奇古怪的非字母、數字的字符。
  5. 電腦虛擬內存不足。這條有點扯,但是我百度的時候還有不少人提到這一點,也不知道是不是轉載的同一人的結論。
  6. 水逆。

(如今看來應該是要安裝的模塊缺少依賴包,因為我在一臺新的CentOS上配置環境時,也碰見過類似的代碼——於2017.09.22)

要解決它,最簡單的莫過於別用Windows了,用Linux去。當然,也Windows下的python3也不是不能用這些第三方模塊,只不過需要自己手動安裝這些模塊,而不要使用pip了。缺點是,很多情況下搞不清包與包之間的依賴,經常會漏包。

根據不同的模塊,去查閱其各自的說明文檔,一般都會有安裝方式的說明。像scrapy的官方文檔就推薦了安裝方式:使用Mingwpy。

有或者,可以直接使用集成的第三方開發環境,比如在配置機器學習的環境時,直接使用了Anaconda。


對於winx下python3.6安裝scrapy,我又仔細看了看錯誤代碼,確定是安裝twisted時出了問題。經過網上搜索,找到了一個解決方案:

首先從http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下載twisted對應版本的whl文件(如我的Twisted?17.5.0?cp36?cp36m?win_amd64.whl),cp後面是Python版本,amd64代表64位,運行命令:

pip install D:\TDownloads\Twisted-17.5.0-cp36-cp36m-win_amd64.whl
  • 1

其中install後面為完整路徑名

安裝完成後,再次運行:

pip install Scrapy
  • 1

即可成功。

windows下使用pip安裝模塊發生“failed with error code 1”的解決方法