解決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.5Using 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。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- 關於多種方式完美解決Python pip命令下載第三方庫的問題
- Python包管理工具pip的15 個使用小技巧
- 新一代Python包管理工具
- Pyhon Flask框架:第一個Flask程序
- Python軟件包安裝的三種常見方法