web-dev-qa-db-fra.com

pip, authentification proxy et "Schéma proxy non pris en charge"

Essayer d'installer pip sur une nouvelle installation python. Je suis coincé avec des erreurs de proxy. Ressemble à un bogue dans get-pip ou urllib3 ??

La question est de savoir si je dois passer par la peine de configurer CNTLM comme décrit ici ou y a-t-il un raccourci?

documentation get-pip.py dit utiliser --proxy="[user:passwd@]proxy.server:port" option pour spécifier le proxy et l'authentification appropriée. Mais il semble que pip passe le tout comme pour urllib3 qui interprète "myusr" comme le schéma d'url, à cause du ':' je suppose (?).

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>

Lorsque j'exécute la commande sans le nom d'utilisateur et le mot de passe, cela fonctionne correctement, mais le proxy rejette la demande en disant qu'elle a besoin d'une authentification ("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>

J'ai jeté un bref coup d'œil à urllib3\poolmanager.py et cela ne semble avoir rien à voir avec le nom d'utilisateur/mot de passe.

12
Kashyap

Cela se plaint du schéma de l'URL (que urlparse comprend être myusr), pour contourner ce que vous devriez plutôt faire:

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

En effet, le script nécessite les variables d'environnement http_proxy ou https_proxy contient le schéma dans l'URL. Définissez les variables d'environnement

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

avant d'exécuter le "python get-pip.py"

3
Junger

Cela peut être le cas lorsque vous utilisez ";" dans vos mots de passe. Cela ne peut pas être analysé correctement, ce qui entraîne une erreur ProxySchemeUnknown déclenchée.

0
marsilya55

Pour le problème que vous avez mentionné, cela dépend de la façon dont l'authentification du serveur proxy a été configurée. Par exemple, mon intranet utilise Windows AD et probablement le serveur proxy utilise l'authentification intégrée de Windows. Ainsi, quand je fais pip install --proxy http://<server-ip>:<port> <module-name>, ça fonctionne bien. Notez que je n'ai pas eu à taper le nom d'utilisateur et le mot de passe, probablement en raison de l'authentification intégrée.

Ainsi, vous devrez trouver l'authentification utilisée par votre serveur proxy.Vous pouvez utiliser l'outil Fiddler (ou tout autre analyseur de réseau) pour vérifier les en-têtes WWW-Authenticate dans la réponse 407, pour vérifier les mécanismes d'authentification pris en charge par le serveur. .

0
G-9