pip, autenticación de proxy y “esquema de proxy no soportado”

Tratando de instalar pip en una nueva instalación de python. Estoy atascado con errores de proxy. Parece un error en get-pip o urllib3 ?

La pregunta es: ¿tengo que pasar por el dolor de configurar CNTLM como se describe aquí o hay un atajo?

La documentación de get-pip.py dice que use la --proxy="[user:passwd@]proxy.server:port" para especificar el proxy y la autenticación relevante. Pero parece que pip pasa todo el asunto como lo es para urllib3 que interpreta “myusr” como el esquema url, debido a ‘:’ supongo (?).

 C:\ProgFiles\Python27>get-pip.py --proxy myusr:mypswd@111.222.333.444: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> 

Cuando ejecuto el comando sin el nombre de usuario y la contraseña, funciona bien, pero el proxy rechaza la solicitud diciendo que necesita autenticación (“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 un breve vistazo a urllib3\poolmanager.py y parece que no tiene nada que ver con el nombre de usuario / contraseñas.

Esto es quejarse sobre el esquema de la URL (que urlparse está entendiendo para ser myusr ), para evitar todo lo que debería hacer:

 get-pip.py --proxy http://myusr:mypswd@111.222.333.444:80 

Esto se debe a que el script requiere que las variables de entorno http_proxy o https_proxy contengan el esquema en la URL. Establecer las variables de entorno.

  export http_proxy="http://:" export https_proxy="https://:" 

antes de ejecutar el “python get-pip.py”

Para el problema que ha mencionado, depende de cómo se haya configurado la autenticación del servidor proxy. Por ejemplo, mi intranet usa Windows AD y probablemente el servidor proxy esté usando la autenticación integrada de Windows. Por lo tanto, cuando hago la pip install --proxy http://: , funciona bien. Tenga en cuenta que no tuve que escribir el nombre de usuario y la contraseña, probablemente debido a la autenticación integrada.

Por lo tanto, deberá averiguar la autenticación que está utilizando su servidor proxy. Puede usar la herramienta Fiddler (o cualquier otro analizador de red) para verificar los encabezados WWW-Authenticate en la respuesta 407, para ver qué mecanismos admite el servidor. .

Esto puede ser un caso cuando usas “;” en sus contraseñas. Esto no se puede analizar correctamente, lo que da como resultado un error ProxySchemeUnknown.

Las siguientes cosas funcionaron para mí:

Paso 1) Establecer HTTPS_PROXY y HTTP_PROXY:

exportar HTTPS_PROXY = “http: // proxy-address: 8080”

export HTTP_PROXY = “http: // proxy-address: 8080”

paso 2): Ejecutar pip con la siguiente configuración

./pip.exe instala pyspark –trusted-host pypi.python.org –trusted-host files.pythonhosted.org –trusted-host pypi.org –proxy “proxy-address: 8080”