2012-11-29 68 views
0

我不能沒有通過PIP命令並安裝Python包也沒有從我的網絡子網連接的URL http://pypi.python.org/然而,當我連接到使用同一臺計算機,但不同的IP地址和子網掩碼,我可以在另一個網絡安裝軟件包並加入網址。 我收到錯誤消息「無法獲取指數的基礎URL http://pypi.python.org/simple/」 當我PIP安裝。 我認爲這是與IP禁令問題,因爲它以前工作。 有沒有人有過這樣的經歷?PIP連接失敗 - 無法取回索引基本URL

+0

能幫你通過代理?當我的驗證細節不正確時,我經常收到類似的消息。 – aquavitae

+0

如果您嘗試啓用'--use-mirrors',會發生什麼情況? –

回答

1

解決方案?:

[email protected]:~$export HTTP_PROXY="$http_proxy" 

簡短的回答:小寫$ HTTP_PROXY必須是大寫$ HTTP_PROXY

長回答: 我也收到此錯誤。檢查netstat -ant,它顯示 「SYN SENT」到[pypi.python.org]端口80.但是爲什麼?我的$ http_proxy服務器明確發送其他流量到另一個IP和端口8080?!它是全局設置的,無論用戶是root用戶還是其他用戶,因此sudo -E解決方案無法播放。

大小寫不檢查用於環境變量在PIP版本1.0 - > 1.3.1 - 至少對於os.environ.get()調用爲字符串HTTP_PROXY。這不完全是一個「錯誤」,但會與其他已安裝的軟件(如Google Chrome)使用小寫字母或不區分大小寫。

如果netstat顯示某個IP「不是你的代理-IP」的端口80的流量,一種解決方案就是修改pip/download.py來查找小寫的env var'http_proxy'。或者,確保在您的環境中設置了$ http_proxy和$ HTTP_PROXY。

這裏是我的測試:

[email protected]:~$ grep -R HTTP_PROXY /usr/local/lib/python2.7/dist-packages/pip/* 

/usr/local/lib/python2.7/dist-packages/pip/download.py:    
proxystr = os.environ.get('HTTP_PROXY', '') 

Python 2.7.3 (default, Aug 1 2012, 05:14:39) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> proxystr = os.environ.get('HTTP_PROXY', '') 
>>> proxystr 
'' 

Now I change HTTP_PROXY to http_proxy and the same snippet of download.py returns the value of my proxy 

>>> proxystr = os.environ.get('http_proxy', '') 
>>> proxystr 
'http://proxyserver.mydomain.com:8080/'