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?
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
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:3128
dans le fichier "pip.ini" mentionné ci-dessus.
Voici comment je l'ai mis en place:
Exportez les paramètres du proxy:
set http_proxy=http://username:password@proxyAddress:port
set https_proxy=https://username:password@proxyAddress:port
Installez le paquet que vous voulez installer:
pip install PackageName
Par exemple:
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.
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
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.
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.
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.
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.
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/