2014-09-29 75 views
6

嘗試在新的python安裝上安裝pip。我被代理錯誤卡住了。看起來像是get-pipurllib3中的一個bug?pip,代理驗證和「不支持的代理方案」

問題是我必須經歷設置CNTLM as described here的痛苦還是有捷徑?

get-pip.py documentation說使用--proxy="[user:[email protected]]proxy.server:port"選項來指定代理和相關認證。但似乎像點通過整個事情,因爲它是urllib3它解釋「myusr」作爲URL方案,因爲':'我猜(?)。

C:\ProgFiles\Python27>get-pip.py --proxy myusr:[email protected]:80 
Downloading/unpacking pip 
Cleaning up... 
Exception: 
Traceback (most recent call last): 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\basecommand.py", line 122, in main 
    status = self.run(options, args) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\commands\install.py", line 278, in run 
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\req.py", line 1177, in prepare_files 
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\index.py", line 194, in find_requirement 
    page = self._get_page(main_index_url, req) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\index.py", line 568, in _get_page 
    session=self.session, 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\index.py", line 670, in get_page 
    resp = session.get(url, headers={"Accept": "text/html"}) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\_vendor\requests\sessions.py", line 468, in get 
    return self.request('GET', url, **kwargs) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\download.py", line 237, in request 
    return super(PipSession, self).request(method, url, *args, **kwargs) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\_vendor\requests\sessions.py", line 456, in request 
    resp = self.send(prep, **send_kwargs) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\_vendor\requests\sessions.py", line 559, in send 
    r = adapter.send(request, **kwargs) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\_vendor\requests\adapters.py", line 305, in send 
    conn = self.get_connection(request.url, proxies) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\_vendor\requests\adapters.py", line 215, in get_connection 
    block=self._pool_block) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\_vendor\requests\packages\urllib3\poolmanager.py", line 258, in proxy_fro 
m_url 
    return ProxyManager(proxy_url=url, **kw) 
    File "c:\users\sg0219~1\appdata\local\temp\tmpxwg_en\pip.zip\pip\_vendor\requests\packages\urllib3\poolmanager.py", line 214, in __init__ 
    'Not supported proxy scheme %s' % self.proxy.scheme 
AssertionError: Not supported proxy scheme myusr 

Storing debug log for failure in C:\Users\myusr\pip\pip.log 

C:\ProgFiles\Python27> 

當我沒有usrname和正常工作密碼運行的命令,但代理拒絕請求說,它需要認證(「407 authenticationrequired」)。

C:\ProgFiles\Python27>get-pip.py --proxy 111.222.333.444:80 
Downloading/unpacking pip 
    Cannot fetch index base URL https://pypi.python.org/simple/ 
    Could not find any downloads that satisfy the requirement pip 
Cleaning up... 
No distributions at all found for pip 
Storing debug log for failure in C:\Users\sg0219898\pip\pip.log 

C:\ProgFiles\Python27>cat C:\Users\sg0219898\pip\pip.log 
------------------------------------------------------------ 
C:\ProgFiles\Python27\get-pip.py run on 09/29/14 16:23:26 
Downloading/unpacking pip 
    Getting page https://pypi.python.org/simple/pip/ 
    Could not fetch URL https://pypi.python.org/simple/pip/: connection error: ('Cannot connect to proxy.', error('Tunnel connection failed: 407 authenticationrequired',)) 
    Will skip URL https://pypi.python.org/simple/pip/ when looking for download links for pip 
    Getting page https://pypi.python.org/simple/ 
    Could not fetch URL https://pypi.python.org/simple/: connection error: ('Cannot connect to proxy.', error('Tunnel connection failed: 407 authenticationrequired',)) 
    Will skip URL https://pypi.python.org/simple/ when looking for download links for pip 
    Cannot fetch index base URL https://pypi.python.org/simple/ 
    URLs to search for versions for pip: 
    * https://pypi.python.org/simple/pip/ 
    Getting page https://pypi.python.org/simple/pip/ 
    Could not fetch URL https://pypi.python.org/simple/pip/: connection error: ('Cannot connect to proxy.', error('Tunnel connection failed: 407 authenticationrequired',)) 
    Will skip URL https://pypi.python.org/simple/pip/ when looking for download links for pip 
    Could not find any downloads that satisfy the requirement pip 
Cleaning up... 
    Removing temporary dir c:\users\sg0219~1\appdata\local\temp\pip_build_SG0219898... 
No distributions at all found for pip 
Exception information: 
Traceback (most recent call last): 
    File "c:\users\sg0219~1\appdata\local\temp\tmp36ynxd\pip.zip\pip\basecommand.py", line 122, in main 
    status = self.run(options, args) 
    File "c:\users\sg0219~1\appdata\local\temp\tmp36ynxd\pip.zip\pip\commands\install.py", line 278, in run 
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle) 
    File "c:\users\sg0219~1\appdata\local\temp\tmp36ynxd\pip.zip\pip\req.py", line 1177, in prepare_files 
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade) 
    File "c:\users\sg0219~1\appdata\local\temp\tmp36ynxd\pip.zip\pip\index.py", line 277, in find_requirement 
    raise DistributionNotFound('No distributions at all found for %s' % req) 
DistributionNotFound: No distributions at all found for pip 

C:\ProgFiles\Python27> 

我在urllib3\poolmanager.py有過短暫的外觀和它似乎不具備任何與用戶名/密碼。

+1

看起來它可能與https://github.com/kennethreitz/requests/issues/2247 – shazow 2014-09-29 22:10:44

+0

有關。事實並非如此。請看下面的答案 – 2014-09-30 14:22:53

回答

10

這是抱怨的URL方案(其中urlparse被理解爲myusr),來解決你應該改爲做:

get-pip.py --proxy http://myusr:[email protected]:80 
1

這是因爲腳本需要的環境變量HTTP_PROXY或者https_proxy包含URL中的方案。設置環境變量

export http_proxy="http://<hostname>:<port>" 
export https_proxy="https://<hostname>:<port>" 

之前運行「蟒蛇get-pip.py」

+0

這對我來說不起作用,但是它與'--proxy'選項一起工作。 – dokaspar 2017-10-03 10:43:42

+0

這對我有用。我得到與OP相同的錯誤,並且使用了不包含'http' /'https'的代理環境變量。使用'--proxy'選項對我不起作用,但這可能是由於我的環境變量仍然存在。 – JGC 2017-11-14 15:57:26

0

對於你提到的問題,這取決於如何在代理服務器認證已設置。 例如,我的內部網使用Windows AD,並且可能代理服務器正在使用Windows集成身份驗證。因此,當我做pip install --proxy http://<server-ip>:<port> <module-name>,它工作正常。請注意,我不必輸入用戶名&密碼,可能是由於集成的身份驗證。

因此,您需要找出您的代理服務器正在使用的身份驗證。您可以使用Fiddler(或任何其他網絡分析器)工具來檢查407響應中的WWW-Authenticate標頭,以檢查auth機器服務器支持。

+0

和OP一樣,我的服務器期望用戶/密碼。無論如何,這個問題是被接受的答案指出的,並指出如何處理auth。 – Kashyap 2017-05-06 04:06:58