web-dev-qa-db-fra.com

Comment utiliser pip sur des fenêtres derrière un proxy authentifiant

Mon ordinateur exécute Windows derrière un proxy sur un serveur Windows (avec Active Directory), et je ne vois pas comment le traverser avec pip (en python3). J'ai essayé d'utiliser --proxy, mais il ne reste que des délais d'attente. J'ai également essayé de définir un long délai d'attente (60 secondes), mais cela ne faisait aucune différence. Mes paramètres de proxy sont corrects et je les ai comparés avec ceux que j'utilise avec succès dans TortoiseHG pour en être sûr.

Est-ce que je peux essayer d'autres astuces connues de tous, ou existe-t-il une limite dans pip en ce qui concerne les serveurs proxy Windows?

Mise à jour: Mes tentatives infructueuses ont consisté à rechercher pypi. J'ai juste essayé d'installer quelque chose et cela a fonctionné. La recherche échoue quand même. Cela indique-t-il un bogue dans pip ou fonctionnent-ils différemment?

66
aquavitae

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

Si vous rencontrez toujours des problèmes, je vous conseillerais d'installer un service d'authentification de proxy (j'utilise CNTLM ) et de pointer-piquer dessus, c'est-à-dire quelque chose comme --proxy http://localhost:3128 

82
Russell

Cela m'a pris quelques heures pour comprendre cela, mais j'ai finalement réussi à le faire fonctionner avec CNTLM et ensuite à le faire fonctionner avec juste un fichier de configuration pip. Voici comment je l'ai obtenu avec le fichier de configuration pip ...

Solution:

1. Sous Windows, accédez au répertoire de votre profil d'utilisateur (Ex. C:\Users\Sync) et créez un dossier nommé "pip".

2. Créez un fichier nommé "pip.ini" dans ce répertoire (Ex. C:\Utilisateurs\Sync\pip\pip.ini) et entrez-y les informations suivantes:

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

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

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

Espérons que cela fonctionne pour les autres aussi!

P.S .: Cela peut poser un problème de sécurité car votre mot de passe est stocké en texte brut. Si cela pose un problème, envisagez de configurer CNTLM à l'aide de cet article (autorise l'utilisation d'un mot de passe haché au lieu du texte brut). Ensuite, définissez proxy = 127.0.0.1:3128dans le fichier "pip.ini" mentionné ci-dessus.

38
Sync

Voici comment je l'ai mis en place:

  1. Ouvrez la commande Invite (CMD) en tant qu’administrateur. 
  2. Exportez 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 voulez installer:

    pip install PackageName

Par exemple: 

 Example

30
Heinrich Cloete

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. Je mets ce dossier dans "C:\Utilisateurs\{mon.nomutilisateur}\AppData\Roaming", car selon la documentation Python: 

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

Dans le fichier pip.ini, je n'ai que:

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

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

15
stann1

J'ai eu un problème similaire et j'ai constaté 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: Authentification proxy requise (le serveur ISA requiert une autorisation pour exécuter la demande . L'accès au filtre de proxy Web est refusé.)

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

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

J'ai également eu besoin de changer ces valeurs par défaut dans le fichier server.cfg en:

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/

7
monkut

Vous pouvez également rencontrer des problèmes avec les certificats de votre proxy. Il y a beaucoup de réponses ici sur la façon de récupérer le certificat de votre proxy. 

Sur un hôte Windows, pour permettre à pip d'effacer votre proxy, vous pouvez définir une variable d'environnement telle que:

PIP_CERT=C:\path\to\certificate\file\in\pem\form\myproxycert.pem

Vous pouvez également utiliser l'argument --cert pour PIP avec le même résultat.

1
cincypiper

même problème sur Windows 10 et les solutions ci-dessus ne fonctionnent pas pour moi.

utilisez un outil de la console d'émulation tel que cygwin puis procédez comme indiqué par défaut sous Linux:

export http_proxy=<proxy>
export https_proxy=<proxy>
pip install <package>

et les choses fonctionnent bien.

1
bucky

J'ai eu le même problème sur un environnement Windows distant. J'ai essayé beaucoup de solutions trouvées ici ou sur d'autres posts similaires mais rien n'a fonctionné. Enfin, la solution était assez simple. Je devais définir NO_PROXY avec cmd:

set NO_PROXY="<domain>\<username>:<password>@<Host>:<port>"
pip install <packagename>

Vous devez utiliser des guillemets doubles et définir NO_PROXY en majuscule. Vous pouvez également ajouter NO_PROXY en tant que variable d'environnement au lieu de le définir chaque fois que vous utilisez la console.

J'espère que cela aidera si une autre solution affichée ici fonctionne.

0
EL Manu

Dans mon cas, cela a fonctionné lorsque j'ai ouvert la commande Invite (cmd) en tant qu'administrateur uniquement et qu'aucune autre information sur les paramètres de proxy n'était nécessaire.

0
Raj Stha

installer cntlm: Cntlm: proxy d'authentification NTLM rapide en C

Config cntlm.ini:

Nom d'utilisateur ob66759

Domaine NAM

Mot de passe secret

Proxy proxy1.net:8080

Proxy proxy2.net:8080

NoProxy localhost, 127.0.0. *, 10. *, 192.168. *

Écouter 3128

Autoriser 127.0.0.1

#Ton ip

Autoriser 10.106.18.138

commencez le:

cntlm -v -c cntlm.ini

Maintenant dans cmd.exe:

pip installer --upgrade pip --proxy 127.0.0.1:3128

Collecting pip
  Downloading https://files.pythonhosted.
44c8a6e917c1820365cbebcb6a8974d1cd045ab4/

    100% |███████████████████████████████
Installing collected packages: pip
  Found existing installation: pip 9.0.1
    Uninstalling pip-9.0.1:
      Successfully uninstalled pip-9.0.1

Successfully installed pip-10.0.1

travaux!

Vous pouvez également masquer le mot de passe: https://stormpoopersmith.com/2012/03/20/using-applications-behind-a-corporate-proxy/

0
Alex B