106 votes

Comment utiliser pip sous Windows derrière un proxy d'authentification ?

Mon ordinateur fonctionne sous Windows derrière un proxy sur un serveur Windows (utilisant active directory), et je n'arrive pas à comprendre comment le traverser avec pip (en python3). J'ai essayé d'utiliser --proxy mais il n'y a toujours pas de délai d'attente. J'ai également essayé de définir un délai d'attente long (60s), mais cela n'a fait aucune différence. Mes paramètres de proxy sont corrects, et je les ai comparés à ceux que j'utilise avec succès dans TortoiseHG pour m'en assurer.

Y a-t-il d'autres astuces que quelqu'un connaît et que je puisse essayer, ou y a-t-il une limitation dans le système d'information ? pip en ce qui concerne les proxys Windows ?

Mise à jour : Mes tentatives infructueuses ont consisté à faire des recherches sur pypi. Je viens d'essayer d'installer quelque chose et ça a marché. La recherche échoue toujours cependant. Est-ce que cela indique un bogue dans pip ou fonctionnent-ils différemment ?

122voto

Russell Points 318

J'ai essayé deux options qui fonctionnent toutes deux sur le proxy authentifié NTLM de mon entreprise. L'option 1 consiste à utiliser --proxy http://user:pass@proxyAddress:proxyPort

Si vous rencontrez toujours des difficultés, je vous suggère d'installer un service d'authentification par proxy (j'utilise CNTLM ) et en y pointant un tuyau, c'est-à-dire quelque chose comme --proxy http://localhost:3128

88voto

Sync Points 941

Il m'a fallu quelques heures pour trouver la solution, mais j'ai finalement réussi à utiliser CNTLM et, par la suite, j'ai réussi à le faire fonctionner avec un simple fichier de configuration pip. Voici comment je l'ai fait fonctionner avec le fichier de configuration pip...

Solution :

1. Dans Windows, naviguez jusqu'au répertoire de votre profil d'utilisateur (Ex. C:\Users\Sync ) et créer un dossier nommé " tuyau "

2. Créer un fichier nommé " pip.ini "dans ce répertoire (Ex. C:\Users\Sync\pip\pip.ini ) et entrez-y ce qui suit :

    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org
    proxy = http://[domain name]%5C[username]:[password]@[proxy address]:[proxy port]

Remplacer [nom de domaine] , [nom d'utilisateur] , [mot de passe] , [adresse proxy] et [port proxy] avec vos propres informations.

Remarque : si votre [nom de domaine] , [nom d'utilisateur] ou [mot de passe] contient des caractères spéciaux, vous devez encodage en pourcentage coder les.

3. À ce stade, j'ai pu lancer " pip install "sans aucun problème.

J'espère que cela fonctionnera aussi pour d'autres personnes !

P.S. : Cela peut poser un problème de sécurité car votre mot de passe est stocké en texte clair. Si c'est le cas, envisagez de configurer CNTLM en utilisant la commande cet article (permet d'utiliser un mot de passe haché au lieu d'un texte en clair). Ensuite, définissez proxy = 127.0.0.1:3128 dans le fichier "pip.ini" mentionné ci-dessus.

52voto

Heinrich Cloete Points 664

Voici comment j'ai procédé :

  1. Ouvrez l'invite de commande (CMD) en tant qu'administrateur.

  2. Exporter les paramètres du proxy :

    set http_proxy=http://username:password@proxyAddress:port

    set https_proxy=https://username:password@proxyAddress:port

  3. Installez le paquet que vous souhaitez installer :

    pip install PackageName

Par exemple :

Example

18voto

stann1 Points 526

J'ai rencontré le même problème sous Windows 7. J'ai réussi à le faire fonctionner en créant un dossier "pip" avec un fichier "pip.ini" à l'intérieur. J'ai placé ce dossier à l'intérieur de " C:\Users\ {mon.nom.d'utilisateur} \AppData\Roaming ", car selon la documentation Python :

Sous Windows, le fichier de configuration est %APPDATA%. \pip\pip.ini

Dans le fichier pip.ini, j'ai seulement :

[global]
proxy = [proxy address]:[proxy port]

Donc pas de nom d'utilisateur:mot de passe. Et cela fonctionne très bien.

8voto

monkut Points 14549

J'ai eu un problème similaire et j'ai découvert que mon entreprise utilise l'authentification proxy NTLM. Si vous voyez cette erreur dans votre pip.log, c'est probablement le problème :

Impossible de récupérer l'URL http://pypi.python.org/simple/pyreadline : Erreur HTTP 407 : Proxy Authentication Required ( Le serveur ISA a besoin d'une autorisation pour répondre à la demande. la demande. L'accès au filtre Web Proxy est refusé. )

NTLMaps peut être utilisé pour interfacer avec le serveur proxy NTLM en devenant un proxy intermédiaire.

Téléchargez NTLMAPs, mettez à jour le server.cfg inclus, exécutez le fichier main.py, puis faites pointer le proxy de pip sur 127.0.0.1 :.

J'ai également dû modifier ces valeurs par défaut dans le fichier server.cfg à :

LM_PART:1
NT_PART:1

# Highly experimental option. See research.txt for details.
# LM - 06820000
# NT - 05820000
# LM + NT - 
NTLM_FLAGS: 07820000

http://ntlmaps.sourceforge.net/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X