Mein Computer führt Windows hinter einem Proxy auf einem Windows-Server aus (mit Active Directory), und ich kann nicht herausfinden, wie ich mit pip
(in python3) durchkomme. Ich habe es mit --proxy
ausprobiert, aber es sind immer noch Timeouts. Ich habe auch versucht, ein langes Timeout (60s) einzustellen, aber das hat keinen Unterschied gemacht. Meine Proxy-Einstellungen sind korrekt und ich habe sie mit denen verglichen, die ich erfolgreich in TortoiseHG verwende, um sicherzugehen, dass sie sicher sind.
Gibt es noch andere Tricks, von denen ich weiß, dass ich sie ausprobieren kann, oder gibt es in Bezug auf Windows-Proxys einige Einschränkungen in pip
?
Update: Meine fehlgeschlagenen Versuche betrafen die Suche nach Pypi. Ich habe gerade versucht, etwas zu installieren und es hat funktioniert. Die Suche schlägt immer noch fehl. Bedeutet dies einen Fehler in pip
oder funktionieren sie anders?
Ich habe zwei Optionen ausprobiert, die beide mit dem authentifizierten NTLM-Proxy meines Unternehmens funktionieren Option 1 ist die Verwendung von --proxy http://user:[email protected]:proxyPort
.
Wenn Sie immer noch Probleme haben, würde ich vorschlagen, einen Proxy-Authentifizierungsdienst zu installieren (ich verwende CNTLM ) und den Pip darauf zu zeigen, z. B. --proxy http://localhost:3128
Ich habe ein paar Stunden gebraucht, um das herauszufinden, aber ich habe es endlich mit CNTLM zum Laufen gebracht und danach mit nur einer Pip-Konfigurationsdatei. Und so habe ich es mit der Pip-Konfigurationsdatei gemacht ...
Lösung:
1. Navigieren Sie in Windows zu Ihrem Benutzerprofilverzeichnis (Bsp. C:\Users\Sync) und erstellen Sie einen Ordner mit dem Namen "pip".
2. Erstellen Sie eine Datei mit dem Namen "pip.ini" in diesem Verzeichnis (Bsp. C:\Users\Sync\pip\pip.ini) und geben Sie Folgendes ein:
[global]
trusted-Host = pypi.python.org
pypi.org
files.pythonhosted.org
proxy = http://[domain name]%5C[username]:[password]@[proxy address]:[proxy port]
Ersetzen Sie [Domänenname], [Benutzername], [Kennwort], [Proxy-Adresse] und [Proxy-Port] durch Ihre eigenen Informationen.
3. Zu diesem Zeitpunkt konnte ich "pip install" ohne Probleme ausführen.
Hoffentlich funktioniert das auch für andere!
P.S .: Dies kann ein Sicherheitsrisiko darstellen, da Ihr Passwort im Klartext gespeichert wird. Wenn dies ein Problem ist, sollten Sie CNTLM mit diesem Artikel einrichten (ermöglicht die Verwendung eines Hash-Passworts anstelle von Klartext). Anschließend setzen Sie proxy = 127.0.0.1:3128
in der oben genannten Datei "pip.ini".
So habe ich es eingerichtet:
Exportieren Sie die Proxy-Einstellungen:
set http_proxy=http://username:[email protected]:port
set https_proxy=https://username:[email protected]:port
Installieren Sie das Paket, das Sie installieren möchten:
pip install PackageName
Zum Beispiel:
Ich bin unter Windows 7 auf dasselbe Problem gestoßen. Ich habe es geschafft, indem ich einen "pip" -Ordner mit einer "pip.ini" -Datei erstellt habe. Ich habe diesen Ordner in "C:\Users\{mein.Benutzername}\AppData\Roaming" abgelegt, weil der Python-Dokumentation zufolge:
Unter Windows lautet die Konfigurationsdatei% APPDATA%\pip\pip.ini
In der Datei pip.ini habe ich nur:
[global]
proxy = [proxy address]:[proxy port]
Also kein Benutzername: Passwort. Und es funktioniert gut.
Ich hatte ein ähnliches Problem und stellte fest, dass mein Unternehmen die NTLM-Proxy-Authentifizierung verwendet. Wenn Sie diesen Fehler in Ihrer Datei pip.log sehen, ist dies wahrscheinlich das Problem:
URL http://pypi.python.org/simple/pyreadline : HTTP-Fehler 407: .__ konnte nicht abgerufen werden. Proxy-Authentifizierung erforderlich (Der ISA -Server erfordert eine Berechtigung, um die Anforderung zu erfüllen Der Zugriff auf den Webproxy-Filter wird verweigert.)
NTLMaps können verwendet werden, um mit dem NTLM-Proxyserver zu kommunizieren, indem sie zu einem Zwischenproxy werden.
Laden Sie NTLMAPs herunter, aktualisieren Sie die enthaltene server.cfg, führen Sie die Datei main.py aus, und legen Sie die Proxy-Einstellung von pip auf 127.0.0.1: fest.
Ich musste auch diese Standardwerte in der Datei server.cfg
ändern:
LM_PART:1
NT_PART:1
# Highly experimental option. See research.txt for details.
# LM - 06820000
# NT - 05820000
# LM + NT -
NTLM_FLAGS: 07820000
Es können auch Probleme mit Zertifikaten von Ihrem Proxy auftreten. Hier finden Sie viele Antworten, wie Sie das Zertifikat Ihres Proxys abrufen können.
Auf einem Windows-Host können Sie eine Umgebungsvariable festlegen, um zuzulassen, dass pip Ihren Proxy löscht.
PIP_CERT=C:\path\to\certificate\file\in\pem\form\myproxycert.pem
Sie können das Argument --cert
auch für PIP
mit demselben Ergebnis verwenden.
das gleiche Problem unter Windows 10 und höher funktioniert bei mir nicht.
benutze ein Emulator-Konsolentool wie cygwin
und mache es dann auf die Standard-Linux-Weise:
export http_proxy=<proxy>
export https_proxy=<proxy>
pip install <package>
und die Dinge funktionieren gut.
Ich hatte das gleiche Problem in einer Remote-Windows-Umgebung. Ich habe viele Lösungen ausprobiert, die hier oder auf anderen ähnlichen Beiträgen gefunden wurden, aber nichts hat funktioniert. Schließlich war die Lösung recht einfach. Ich musste NO_PROXY
mit cmd einstellen:
set NO_PROXY="<domain>\<username>:<password>@<Host>:<port>"
pip install <packagename>
Sie müssen doppelte Anführungszeichen verwenden und NO_PROXY
auf Großbuchstaben setzen. Sie können auch NO_PROXY
als Umgebungsvariable hinzufügen, anstatt sie bei jeder Verwendung der Konsole festzulegen.
Ich hoffe, dass dies helfen wird, wenn eine andere hier veröffentlichte Lösung funktioniert.
In meinem Fall hat es funktioniert, als ich den Befehl Prompt (cmd) nur als Administrator geöffnet habe und keine weiteren Informationen zu den Proxyeinstellungen benötigt wurden.
install cntlm: Cntlm: Schneller NTLM-Authentifizierungs-Proxy in C
Config cntlm.ini:
Benutzername ob66759
Domain NAM
Passwort geheim
Proxy proxy1.net:8080
Proxy proxy2.net:8080
NoProxy localhost, 127.0.0. *, 10. *, 192.168. *
Hören Sie 3128
Erlaube 127.0.0.1
#Ihre IP
Erlaube 10.106.18.138
starten Sie es:
cntlm -v -c cntlm.ini
Jetzt in cmd.exe:
pip install --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
funktioniert!
Sie können das Passwort auch ausblenden: https://stormpoopersmith.com/2012/03/20/ using-applications-behind-a-corporate-proxy/