解決pip install 卡住不動的問題

啥也不說瞭,眼淚嘩嘩的 –來自怨念深重的不靈狗。

【運行環境】

1、在ubuntu下使用pip安裝flask-mongoengine;

2、pip已經升到最高版本,你妹,舊版本ctrl + c後還能知道斷在哪,新的就直接連個p都沒有;

3、使用瞭豆瓣的源做瞭加速,安裝時還加瞭能翻墻的代理,然並卵;

4、卡住瞭,怎麼描述錯誤提示?國內和國外google瞭下都沒有啥相關問題。

5、Extremely slow pypi package retrieval with i.e. pip可以這樣描述嗎?

6、Python 2.7.10

【錯誤提示】

還想要錯誤提示?提示你妹啊!卡住之後根本沒有錯誤提示。

(venv)➜ flask-mongoengine-0.7.5 pip install flask-mongoengine –proxy=http://proxy.xxx.com:80 -v
Collecting flask-mongoengine
1 location(s) to search for versions of flask-mongoengine:
* http://pypi.douban.com/simple/flask-mongoengine/
Getting page http://pypi.douban.com/simple/flask-mongoengine/
Starting new HTTP connection (1): proxy.corp.qihoo.net
“GET http://pypi.douban.com/simple/flask-mongoengine/ HTTP/1.1” 301 178
“GET http://pypi.doubanio.com/simple/flask-mongoengine/ HTTP/1.1” 200 1068
Analyzing links from page http://pypi.doubanio.com/simple/flask-mongoengine/
Found link http://pypi.doubanio.com/packages/f3/46/e527ea37dd53e5addae8167c2e5850029c7be98add465928cac7d1d10d0e/flask-mongoengine-0.7.5.tar.gz#md5=e207998d4ab5237582c4983cd18ab484 (from http://pypi.doubanio.com/simple/flask-mongoengine/), version: 0.7.5

Using version 0.7.5 (newest of versions: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7.0, 0.7.1, 0.7.3, 0.7.4, 0.7.5)
“GET http://pypi.doubanio.com/packages/f3/46/e527ea37dd53e5addae8167c2e5850029c7be98add465928cac7d1d10d0e/flask-mongoengine-0.7.5.tar.gz HTTP/1.1” 200 110621
Downloading http://pypi.doubanio.com/packages/f3/46/e527ea37dd53e5addae8167c2e5850029c7be98add465928cac7d1d10d0e/flask-mongoengine-0.7.5.tar.gz (110kB)
Downloading from URL http://pypi.doubanio.com/packages/f3/46/e527ea37dd53e5addae8167c2e5850029c7be98add465928cac7d1d10d0e/flask-mongoengine-0.7.5.tar.gz#md5=e207998d4ab5237582c4983cd18ab484 (from http://pypi.doubanio.com/simple/flask-mongoengine/)
100% |████████████████████████████████| 112kB 44.5MB/s
Running setup.py (path:/tmp/pip-build-5h86uM/flask-mongoengine/setup.py) egg_info for package flask-mongoengine
Running command python setup.py egg_info
#卡在這裡不動瞭
^CCleaning up…
Operation cancelled by user

【問題原因】

手動執行,發現斷在瞭sock,ssl建立那塊的代碼,說明在下載東西;

明明指定瞭douban的源, 卻下的依然很慢;

真相隻有一個,flask-mongoengine這個庫安裝時很賤的又自己安裝瞭其他庫(這裡筆者稱為二次安裝),二次安裝時走的源是python自帶的[https://pypi.python.org],這樣就卡住瞭。

【解決方案】

筆者沒有找到比較優美的方式解決問題,在pip.conf中沒有設置二次安裝時指定源的方法,英文好的可以再研究下pip使用的官方文檔.

1. root用戶下編輯文件/usr/lib/python2.7/dist-packages/setuptools/package_index.py;

2. 插下廣告:用virtualenv的同學要修改venv目錄下的./lib/python2.7/site-packages/setuptools/package_index.py。

3. 跳到第261行,硬編碼index_url的值,改完後如下:

 class PackageIndex(Environment):
  """A distribution index that scans web pages for download URLs"""
  def __init__(
    self, index_url="http://pypi.douban.com/simple", hosts=('*',),
    ca_bundle=None, verify_ssl=True, *args, **kw
    ):
   Environment.__init__(self,*args,**kw)
   index_url = "http://pypi.douban.com/simple"
   self.index_url = index_url + "/"[:not index_url.endswith('/')]

【執行結果】

執行命令 pip install flask-mongoengine ,貼一下成功後的提示(holy shit!)

...
done
 Removing source in /tmp/pip-build-ZSaB9M/flask-mongoengine
Successfully installed WTForms-2.1 flask-mongoengine-0.7.5 flask-wtf-0.12
Cleaning up...

【fck】

csdn做的markdown這SX玩應兒,在numbered list 中間插個code block,代碼塊後的序號就對不上瞭,用官方的解決方案完全沒用,隻能給最後一條分出個標題瞭,可憐處女座瞭。

補充:Python 安裝模塊時,使用pip install xxx安裝時,很慢的解決方法

最近在使用Python的時候需要安裝各種模塊,而pip是很強大的模塊安裝工具,但是由於國外官方pypi經常被墻,導致不可用,所以我們最好是將自己使用的pip源更換一下,這樣就能解決被墻導致的裝不上庫的煩惱。

最近使用得比較多並且比較順手的是清華大學的pip源,它是官網pypi的鏡像,每隔5分鐘同步一次,地址為 https://pypi.tuna.tsinghua.edu.cn/simple

臨時使用方法

比如我們需要安裝 selenium 庫,那麼可以使用這樣的安裝命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium 

這樣就可以從清華大學的鏡像很快去安裝selenium庫瞭。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: