2014-09-29 6 views
6

Попытка установить pip на новую установку python. Я застрял с ошибками прокси. Похож на ошибку в get-pip или urllib3 ??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

+0

Это не так. Пожалуйста, см. Ответ ниже –

ответ

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

+0

Это сработало для меня. Я получал ту же ошибку, что и OP, и я использовал переменные среды прокси, которые не содержали 'http' /' https'. Использование опции '--proxy' не работало для меня, но это могло быть связано с тем, что мои переменные среды все еще существуют. – JGC

0

Для этой проблемы вы упомянули, это зависит от того, как проверка подлинности прокси-сервер был настроен. Например, моя интрасеть использует Windows AD и, вероятно, прокси-сервер использует Windows Integrated auth. Таким образом, когда я делаю pip install --proxy http://<server-ip>:<port> <module-name>, он отлично работает. Обратите внимание, что мне не нужно вводить имя пользователя &, вероятно, из-за интегрированного auth.

Итак, вам нужно узнать, как аутентификация используется вашим прокси-сервером. Вы можете использовать инструмент Fiddler (или любой другой сетевой анализатор) для проверки заголовков WWW-Authenticate в ответе 407, чтобы проверить, mechs сервер поддерживает.

+0

Как и в OP, мой сервер ожидает пользователя/пароль. В любом случае проблема заключалась в том, на что указывал принятый ответ, отметив, что это связано с auth как таковым. – Kashyap