it-swarm.com.de

Wie verwende ich pip auf Windows hinter einem authentifizierenden Proxy?

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?

66
aquavitae

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 

82
Russell

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

38
Sync

So habe ich es eingerichtet:

  1. Öffnen Sie die Eingabeaufforderung (CMD) als Administrator. 
  2. Exportieren Sie die Proxy-Einstellungen:

    set http_proxy=http://username:[email protected]:port

    set https_proxy=https://username:[email protected]:port

  3. Installieren Sie das Paket, das Sie installieren möchten:

    pip install PackageName

Zum Beispiel: 

 Example

30
Heinrich Cloete

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.

15
stann1

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

http://ntlmaps.sourceforge.net/

7
monkut

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.

1
cincypiper

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.

1
bucky

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.

0
EL Manu

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.

0
Raj Stha

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/

0
Alex B