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.
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
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"
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.
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. .