<p>pip respektiert den Proxy nicht, während Pakete aus der Anforderungsdatei installiert werden</p>

Erstellt am 8. Mai 2014  ·  86Kommentare  ·  Quelle: pypa/pip

Ich verwende Pip 1.5.5 auf Python 2.7.6, CentOS 6.5 x86_64. Python wird in /usr/local/ kompiliert und installiert. Beim Versuch, Pakete aus der Anforderungsdatei zu installieren, werden die ersten 12 Pakete über Proxy heruntergeladen, aber danach versucht pip, sich direkt mit dem Server anstelle des Proxys zu verbinden, und die Anfrage schlägt fehl.

$ export https_proxy= http://proxy :8080
$ /usr/local/bin/pip2.7 install -r reqs.txt

Dies führt zum Download der ersten 12 Pakete über Proxy, aber das nächste ist eine direkte HTTPS-Anfrage an den Pypi-Server. Ich habe dies über Paketverfolgung und Proxy-Protokolle validiert.

Beachten Sie, dass die Installation mit /usr/bin/pip, v1.3.1 einwandfrei funktioniert.

Die Gedanken?

proxy auto-locked

Hilfreichster Kommentar

ich renne
pip install -r requirements.txt --proxy=<proxy address>

meine requirements.txt enthält 20 Einträge, sie installiert die ersten 16 ohne Probleme und wirft dann den Fehler:
Timeout: (<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x1f70650>, 'Connection to pypi.python.org timed out. (connect timeout=15)')

Interessanterweise schlägt es immer fehl, wenn das 16. Paket ( django-session-csrf==0.5 ) installiert wird, aber wenn ich das Paket manuell mit pip installiere (nicht über die Datei requirements.txt), funktioniert es einwandfrei. Wenn ich pip install -r requirements.txt --proxy=<proxy address> danach erneut ausführe, überspringt es natürlich django-session-csrf , installiert dann aber das folgende Paket ohne Probleme und schlägt danach mit dem Timeout-Fehler für das Paket fehl.

Das Erhöhen des Timeouts auf etwa 300 hilft nicht.

Alle 86 Kommentare

Ist das eine direkte HTTPS-Anfrage an PyPI in einem setup_requires irgendwo?

Nein, ich glaube nicht. Ich habe das Verzeichnis /tmp/pip_built_root eingecheckt. grep'd für 'setup_requires' in allen setup.py/cfg-Dateien. Gar nichts. Die Installation ist wie erwartet fehlgeschlagen.

Lassen Sie mich wissen, ob es eine andere Möglichkeit gibt, dies zu überprüfen.

Ist es ein bestimmtes Paket, das sich an PyPI wendet?

Hier sind die Inhalte von reqs.pip

requests==1.2.3
Flask==0.10.1
Flask-Login==0.2.7
Flask-Security==1.6.9
Flask-SQLAlchemy==1.0
Flask-Script==0.6.7
Flask-Principal==0.4.0
Flask-WTF==0.9.1
boto==2.3.0
suds==0.4
xmltodict==0.8.6
simplejson==3.3.3 
stripe==1.12.2
raven==4.1.1
Flask-Migrate==1.2.0
alembic==0.6.3

Installation schlägt bei Stripe fehl. Wenn ich simplejson kommentiere, scheitert es an raven. Hier ist das Fehlerprotokoll. Beachten Sie, dass die Zeitüberschreitung darauf zurückzuführen ist, dass die Firewall Pakete verwirft, die direkt an den Pypi-Server gesendet werden.

Downloading/unpacking stripe==1.12.2 (from -r /var/www/html/backend/reqs.pip (line 21))
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/commands/install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/req.py", line 1197, in prepare_files
    do_download,
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/req.py", line 1375, in unpack_url
    self.session,
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/download.py", line 546, in unpack_http_url
    resp = session.get(target_url, stream=True)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/_vendor/requests/sessions.py", line 395, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/download.py", line 237, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/_vendor/requests/sessions.py", line 383, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/_vendor/requests/sessions.py", line 486, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg/pip/_vendor/requests/adapters.py", line 387, in send
    raise Timeout(e)
Timeout: (<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x1f70650>, 'Connection to pypi.python.org timed out. (connect timeout=15)')

Ich habe den gleichen Fehler. Seltsamerweise installiert es ohne Probleme eine Reihe von Paketen aus der Anforderungsdatei, schlägt dann aber mit dem Fehler VerifiedHTTPSConnection Timeout fehl.

Ich konnte keine Lösung dafür finden. Als Problemumgehung habe ich Proxychains verwendet, um einen transparenten Proxy zu erzwingen.

Es wäre großartig, wenn wir eine einfachste Reihe von Schritten bekommen könnten, um dies zu reproduzieren

ich renne
pip install -r requirements.txt --proxy=<proxy address>

meine requirements.txt enthält 20 Einträge, sie installiert die ersten 16 ohne Probleme und wirft dann den Fehler:
Timeout: (<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x1f70650>, 'Connection to pypi.python.org timed out. (connect timeout=15)')

Interessanterweise schlägt es immer fehl, wenn das 16. Paket ( django-session-csrf==0.5 ) installiert wird, aber wenn ich das Paket manuell mit pip installiere (nicht über die Datei requirements.txt), funktioniert es einwandfrei. Wenn ich pip install -r requirements.txt --proxy=<proxy address> danach erneut ausführe, überspringt es natürlich django-session-csrf , installiert dann aber das folgende Paket ohne Probleme und schlägt danach mit dem Timeout-Fehler für das Paket fehl.

Das Erhöhen des Timeouts auf etwa 300 hilft nicht.

Ich habe dasselbe Problem unter CentOS 6.4 mit Python 2.6.6 und Pip 1.5.6. Irgendeine Idee, wie man einen Workaround bekommt?

Scheint immer das 15. Element in der Anforderungsdatei zu sein. Wenn ich frühere Elemente auskommentiere, wird das Zeitlimit für ein späteres Element als zuvor überschritten ...

Versucht mit Pip 1.5.4 und 1.5.6 auf Ubuntu 14.04 LTS

@pcraston könnte es eine Art Ratenbegrenzung für Ihren Proxy sein? Mit der Anforderungsdatei sendet pip zu viele Anfragen in kurzer Zeit?

Ich habe gerade mit unserem IT-Manager gesprochen, er sagt, dass es für unseren Proxy keine Ratenbegrenzung gibt. Aber es scheint seltsam!

Es scheint nicht durch einen Proxy erzwungen zu werden. Wenn Sie die ausgehenden überwachen
Verkehr, werden Sie sehen, dass pip aus irgendeinem Grund anfängt, direkte Anfragen zu senden
zum Webserver. Daher laufen die Anforderungen entweder ab oder sind abgelaufen
abgelehnt (abhängig von der Netzwerkkonfiguration).

Ich kann bestätigen, dass ich das gleiche Problem habe. Threatstream/mhn mit der Anforderungsdatei installieren.

Dies scheint ein Anforderungsfehler zu sein, ich habe ihn hier zum Upstream umgeleitet: https://github.com/kennethreitz/requests/issues/2110

Oder vielleicht urllib3.

Ok Requests hat uns dies zurückgeworfen, es scheint, dass es sich tatsächlich um ein PyPI/Fastly-Problem handelt.

Können Leute, die dieses Problem bekommen, dieses Skript mit Anfragen 2.3.0 ausführen?

import requests
session = requests.Session()
for i in range(100):
    print(i)
    session.get("https://pypi.python.org/simple/").content

und berichten, wenn es fehlschlägt und wo es fehlschlägt?

Auch wenn Sie uns den Namen Ihrer Proxy-Software und -Version oder andere Informationen ähnlicher Art mitteilen, die wir verwenden können, um sie zu reproduzieren.

Auch wenn Sie zu http://debug.fastly.com/ gehen und den verschlüsselten Block oben posten könnten, damit ich ihn an Fastly weiterleiten kann, wäre das auch großartig.

Oh, wenn das obige Skript fehlschlägt, können Sie es auch mit https://imgur.com/ und https://google.com/ versuchen.

Können Sie auch klarstellen, dass es keine _adressenbasierte Einschränkung für die Ratenbegrenzung oder ähnliches gibt? Beispielsweise sind die mit PyPI verknüpften IP-Adressen auch mit vielen anderen Websites verknüpft, die Fastly wie imgur hostet. Könnten die Proxys also basierend auf den IP-Adressen verweigern?

Also habe ich das kleine Skript ausgeführt und nach 20 Sekunden Anzeige von Inhalten erhalte ich die folgende Fehlermeldung:

51
Traceback (letzter Aufruf zuletzt):
Datei "“, Zeile 3, ein
Datei "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", Zeile 468, in >get
return self.request('GET', url, _kwargs)Datei "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", Zeile 456, in >requestresp = self.send(prep, *_send_kwargs)Datei "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", Zeile 559, in sendr = adapter.send (Anfrage, * kwargs)
Datei "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", Zeile 378, in send
ProxyError(e) auslösen
Requests.Exceptions.ProxyError: ('Kann keine Verbindung zum Proxy herstellen.', Fehler (110, 'Zeitüberschreitung der Verbindung'))

Unser Unternehmens-Proxy hat keine Ratenbegrenzung oder adressenbasierte Beschränkungen.

Genau wie oben schlug das Skript bei der 52. Anfrage sowohl für pypi als auch für imgur fehl. Google hat gut funktioniert.

49
50
51
Traceback (letzter Aufruf zuletzt):
Datei "/tmp/pypitest.py", Zeile 5, in
session.get("https://pypi.python.org/simple/").content
Datei „/usr/local/lib/python2.7/dist-packages/requests/sessions.py“, Zeile 468, in get
return self.request('GET', url, _kwargs)Datei "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", Zeile 456, in Anfrageresp = self.send(prep, *_send_kwargs)Datei "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", Zeile 559, in sendr = adapter.send (Anfrage, * kwargs)
Datei "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", Zeile 378, in send
ProxyError(e) auslösen
Requests.Exceptions.ProxyError: ('Kann keine Verbindung zum Proxy herstellen.', Fehler (111, 'Verbindung abgelehnt'))

Der Proxy ist so konfiguriert, dass er ablehnt, falls eine direkte Verbindung versucht wird, daher 111. Es gibt keine Ratenbegrenzung AFAIK. Darüber hinaus kann ich bestätigen, dass ich bei zwei verschiedenen Proxy-Bereitstellungen mit der gleichen Situation konfrontiert war – beide Squid mit Version 3.1.10 auf Centos.

Antwort von debug.fastly.com

H4sIAAAAAAAAA31SXU/bMBT9K1GeNlan+WxTKqRloYVsNFSkICZVQm7iJhaJ3dkOTUH8912HaRVi
muQH+55zj6+Pz4tZEVwQIc3TF/OSS2WemgXZtKW1xVLVByvnjTkwbyURKCoJ0/iCP9O6xuthYNnG
p3vHmRq3m5apdmpcUdZ2RheOHkb+1BBPp+7Esj8bFyR/5Ouhazs2LMeYU0G2vIMKwCAf5TnZaWlF
OrUeVqqpB3i3q2mOFeVsPex06Uv3odzU019ntjUZnKyHJ/02/CuHrjArW1wS0CUM3WYDwnpKAJQY
5xVBMWdK8BoIDE4QUM/cYOLax5HQjOW8oKwESvlMdwDMe19QXFNwAyVLQBzfcryJFbrWCAj3aEUb
IqCeOb7tjcd+6DmWB8JOMBkHg7vMPspcEJ4sYQ6wTxxiXuhhk/SIZ0Q8gfVv19ie5fqB5bqu5YT+
kbQizQ7dz+f/GOUOC0ZlpZHQD7xx6HhBD8y52GNRkELvPjT+Ee4l894q+TRyUfY99szXgbmvOJUP
jKg9F486ORT2rG3e6dgGMo4nzwFZhhv9wHQxS+IVSpJkhS5/ngMgFVYtZNCMsiy5SGfnRnqdouX1
zSr6djXTnVzR7UF/1GYnsMTFV0qpsnBuUQZwA1+x0fAiStIVuskWUZqg9EeKejM1XPN9/ylvjHeQ
4K0i8r/dVOh4JjfQ+WH4vIKgkQJwCLiPbBe52mPJW5Hr50bLNImptvE904O8mFyUmNHnPstanCki
WH/CtZEwqaiCuQy+hcOWi6aHjBXJK8ZrXh7gDlwUgkj5FprX19+sUp+UzgMAAA==

Es schlägt auch bei der 52. Anfrage für mich auf https://pypi.python.org/simple/ und https://imgur.com/ fehl (jedoch mit einem anderen Fehler als @shredder12 und @nullprobe – siehe unten):

50
51

ProxyError                                Traceback (most recent call last)
<ipython-input-21-788947201a19> in <module>()
      1 for i in range(100):
      2     print (i)
----> 3     session.get("https://pypi.python.org/simple/").content
      4 

/home/vagrant/venv/local/lib/python2.7/site-packages/requests/sessions.pyc in get(self, url, **kwargs)
    393 
    394         kwargs.setdefault('allow_redirects', True)
--> 395         return self.request('GET', url, **kwargs)
    396 
    397     def options(self, url, **kwargs):

/home/vagrant/venv/local/lib/python2.7/site-packages/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert)
    381             'allow_redirects': allow_redirects,
    382         }
--> 383         resp = self.send(prep, **send_kwargs)
    384 
    385         return resp

/home/vagrant/venv/local/lib/python2.7/site-packages/requests/sessions.pyc in send(self, request, **kwargs)
    484         start = datetime.utcnow()
    485         # Send the request
--> 486         r = adapter.send(request, **kwargs)
    487         # Total elapsed time of the request (approximately)
    488         r.elapsed = datetime.utcnow() - start

/home/vagrant/venv/local/lib/python2.7/site-packages/requests/adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
    379 
    380         except _ProxyError as e:
--> 381             raise ProxyError(e)
    382 
    383         except (_SSLError, _HTTPError) as e:

ProxyError: Cannot connect to proxy. Socket error: [Errno 110] Connection timed out.

Alles funktioniert einwandfrei, wenn Anfragen an https://google.com gesendet werden

Proxy ist die Squid-Version 3.1.20, die auf Debian läuft

http://debug.fastly.com/ Ausgabe:

H4sIAAAAAAAAAA21SXW/aMBT9K1b20nY4xIFAaNUHlgKL1AZE0q8JaXIdN1hLbOo4BVr1v+863cam
VcqDc8+5536dV2fNac517Zy+Ol9VbZxTJ+cPTeE+0tqUe5epyuk41zXXeFxwafEr9SLKkq66geuh
o1shc7WtUZKhgUvO0O38dtA/Q/r5tOe53jGacfZDrbq+Rzz4CJoKzR/VbtW1MEiPGeMbK2v4zqy6
a1OVHbrZlIJRI5RcdXc29Hn3X7gqz57OPXfUOVl1T9pn+EcOX1JZNLTgoMslLh46XLaUACg3gkKY
uASVitFyDVOjo/qpETk05RLX946BFVG25jhS0mhVAr+iOwyC534w8r1D43gimcqFLIBSvIgNANN2
czgqBewLxwtAQt8dQsEQNjQYAuUOZ6LiGpCU9L0+6ZF+ELohGfaG4WgUdm5S7yA04ypeQCcNtLKP
VG6Hmn054CnXz3CethAJA7dnK8EXHCgZrzb4bjr9sJUbqqWo1zabDEkAd/IGLTBVekt1znP7+iD1
l3gry9p1lWxPiB/gy+jeees427US9XfJzVbpH9ZhAt6yqf7V8kOE0V//IwLaklZ2zm+TpHXOkPTw
xXiJo3mSTe6yOJnOl1fjLJ4n6SS6XsbZPeSw9xX9Xk9tqGnA2M44TeNZMrlAizGEKzjKw/5dGyfz
CF8lmWWrRjNbchkvJugT+LQ0XPP8MIfaSnuyV0fpgkrx0hoREqxHwLsolo9KV20UpZw1Wpg9ujSg
8PYTBBarvWcDAAA=

Schlägt bei 52 Versuchen fehl. Wie oben funktioniert gut mit https://google.com.

Ausführen von Ubuntu 12.04 im Nur-Host-Modus auf VirtualBox, Proxying über Wingate auf Windows 8.1-Host.

Traceback (letzter Aufruf zuletzt):
Datei "/tmp/test.py", Zeile 5, in
session.get("https://pypi.python.org/simple/").content
Datei „/usr/local/lib/python2.7/dist-packages/requests/sessions.py“, Zeile 468, in get
return self.request('GET', url, _kwargs)Datei "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", Zeile 456, in Anfrageresp = self.send(prep, *_send_kwargs)Datei "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", Zeile 559, in sendr = adapter.send (Anfrage, * kwargs)
Datei "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", Zeile 378, in send
ProxyError(e) auslösen
Requests.Exceptions.ProxyError: ('Kann keine Verbindung zum Proxy herstellen.', Fehler (101, 'Netzwerk ist nicht erreichbar'))

H4sIAAAAAAAAAA21T70/bMBD9V6x8AhanSZ2kBMSHLsCK+FXRQpHWaXKTI7Wa2Jnjri2o//vOKaOT
hqxI8Xu+d8935zdnDjwH3Tgnb85ANcY5cXKYLQvvhTem3HiZqhzX6WcZ1JYzsDbTztxUpcvruhQZ
N0LJaWdtoS/r/+CqPP115nuJKypewLSzglntHk07Ry18jNKPDWjaL0Ba+Vv1KsqSTzuR55ODiZC5
WjXkbkxij52Syf0kDg9JHzPABGbXAq1ErOexmBxcD8a3Ny4pxQLIN8gW6pCkc60qzMlQzAuSIPaC
iJERf+Fa/A38uBu94bJYokd0AZI+jlyQHx5Tns2BpkoarUo8UPE1bQwv4cxH9pl+LZeQKm7ok+A2
Pghj1gNgAc9mLMn3SS5kpnIhCzxUvIoaicu2zDQtBVaAXg2RCSKv6zOvy5jXi1v9sahAIzMKQj8M
wpDFzEvCOOyGSRy4TyN/L/QN1NUQrS7R6yZVub3P42jPj0D/xoK3ibo2SeSFWJ3jcH9kDFVNny8v
P7XyxLUUzRy5417SQydR1OKXSq+4ziG3f59Evmu3qllbTqXzoMe69P7h3Nm6zmquRPNTglkpvbDT
KPBfLqudlm8XocTKRh8f6kpe2SsOhvTqbnzxcHcxRnDOZV5aGLc0iKjfrgAZ7JpZ4rA750JDZki/
aUQhKzt9rpNp4AZymzFJQur3qG9jMpQrWrjrBwgz6kd7x2olbW/eHKULLsVrO/nWEaxKMIYOebbA
wpBUVTWXm3/dDYa443muoWnfX2M0AD6D7w7zfZ8MuFTYKzLawT/QiTAbjBvyUpF+adT7haxW2sdN
ne0anoTMtw3NdmOwG4HtdvsHvEQyo+4DAAA=

Hallo,
Ich habe das gleiche Problem in meiner Vagrant-Umgebung festgestellt, in der CentOS 6.5 und Pip 1.5.6 mit unserem Unternehmens-Proxy ausgeführt werden.

Dies scheint zufällig bei großen requirements.txt zu passieren, die ich versuche, mit pip zu installieren, wenn ich den https-Proxy verwende.

Nach einer Untersuchung fand ich heraus, dass das Problem im PoolManager von urllib3 zu liegen scheint, der in die Pip-Installation eingebettet ist (_vendor/requests/packages/urllib3/poolmanager.py:ProxyManager).

Ich habe eine schnelle Lösung im Code gefunden, die meine Installation korrekt durchläuft.

Um zu bestätigen, was ich sage, ändern Sie einfach diese einzelne Zeile in der folgenden Datei Ihrer Pip-Installation:

$ diff /opt/venvs/ironic/lib/python2.6/site-packages/pip/_vendor/requests/adapters.patch.py /opt/venvs/ironic/lib/python2.6/site-packages/pip/_vendor/requests/adapters.py
209c209
<             if True or not proxy in self.proxy_manager:
---
>             if not proxy in self.proxy_manager:

Die Pip-Installation funktioniert danach korrekt, wenn jedes Mal ein neues ProxyManager-Objekt instanziiert wird.

Hier ist ein Beispiel für einen Fehler, den ich früher bei meiner Pip-Installation hatte:

$ pip install -r requirements.txt
....
Downloading/unpacking pecan>=0.4.5 (from -r requirements.txt (line 25))
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/commands/install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/req.py", line 1197, in prepare_files
    do_download,
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/req.py", line 1375, in unpack_url
    self.session,
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/download.py", line 546, in unpack_http_url
    resp = session.get(target_url, stream=True)
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/_vendor/requests/sessions.py", line 468, in get
    return self.request('GET', url, **kwargs)
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/download.py", line 237, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/_vendor/requests/sessions.py", line 456, in request
    resp = self.send(prep, **send_kwargs)
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/_vendor/requests/sessions.py", line 559, in send
    r = adapter.send(request, **kwargs)
  File "/opt/venvs/ironic/lib/python2.6/site-packages/pip/_vendor/requests/adapters.py", line 384, in send
    raise Timeout(e, request=request)
Timeout: (<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x2802e50>, 'Connection to pypi.python.org timed out. (connect timeout=15)')

Storing debug log for failure in /root/.pip/pip.log

Für die Neugierigen, die von mir getestete requirements.txt-Datei ist diese:
https://github.com/openstack/ironic/blob/master/requirements.txt

Hey @alexandrem , ich bin mir nicht sicher, ob ich groke, was du tatsächlich geändert hast. War es in pip/_vendor/requests/adapters.py ? Oder eine andere Datei?

Ja, meine Teständerung war in pip/_vendor/requests/adapters.py

Entschuldigung, der Unterschied war umgekehrt, aber im Grunde füge ich der Bedingung in Zeile 209 von adapter.py einfach ein True hinzu, um immer eine ProxyManager-Instanz zu erstellen, und überspringe somit die Pool-Manager-Logik.

Wenn jeder, der das obige Skript von @dstufft ausgeführt hat, das folgende Skript ausprobieren könnte, würde uns das helfen, das Problem einzugrenzen. Erstens, wenn Sie feststellen können, welcher Proxy requests verwendet, schnappen Sie sich das

from requests.packages.urllib3 import ProxyManager

proxy_url = 'http://localhost:8080'  # Just an example, place your proxy URL here please

pool = ProxyManager(proxy_url)
for i in range(100):
    print(i)
    pool.request("GET", "https://pypi.python.org/simple/", headers={'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*'}).read()

Dies entspricht ungefähr dem, was Anfragen senden.

Wenn Sie alle ein einfaches Get (mit Anfragen) zu https://httpbin.org/get machen und das Ergebnis des Aufrufs der Methode json in der Antwort posten könnten, wäre ich daran interessiert zu sehen, ob die Anfrage einmal durch den Proxy unterscheidet sich von dem, was wir sowieso erwarten würden.

Ich stoße auf dieses Problem mit Pip 1.5.5 oder großartig und sogar mit Anfragen 2.2.1. Das Anheften der Pip-Version an 1.5.4 behebt das Problem und wir können alles problemlos installieren. Das Ausführen des Skripts von @dstufft über pypi schlägt fehl, ebenso wie imgur, beide beim 52. Versuch, Google löst es jedoch ohne Probleme.

Hier ist der Fehler, den ich bekomme, wenn ich die pypi- und imgur-Läufe beende:

Traceback (most recent call last):
  File "pip_test.py", line 5, in <module>
    session.get("https://imgur.com/").content
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 395, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 383, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 486, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 330, in send
    timeout=timeout
  File "/usr/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 542, in urlopen
    body=body, headers=headers)
  File "/usr/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 367, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python2.7/httplib.py", line 973, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 1007, in _send_request
    self.endheaders(body)
  File "/usr/lib/python2.7/httplib.py", line 969, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 829, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 791, in send
    self.connect()
  File "/usr/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 111, in connect
    timeout=self.timeout)
  File "/usr/lib/python2.7/socket.py", line 562, in create_connection
    sock.connect(sa)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)

Hier ist der Fastly-Debug:

H4sIAAAAAAAAA21Ta2/bIBT9K4hPW2cc/M5D+xDl0WXqsmpJ2kpLVRGb2qg2ZJg0aaP8912cdVnX
CluCey4H7rmHPS44y7iucXePv6ja4C7O+GqTu/esNuWTm6oKO3hRc036OZcW/6aeRVmyZStyKfpw
43k9tFhtpNn00IWQmx3ateO7OOwh/dgNqEs/onOePqhly6cehc9DY6H5vdotWxYG+n6a8rWlNnxn
lq3CVKXD1utSpMwIJZetnQ192r0JV2Xv12fqdpyzZeusmbb/0pELJvMNyznwckkWM4fLJiWClOF0
DmHvlDySqcqEzCGaP4s1AONGADIoBZRNJpeABG3Xo6Hr+ZHrQ8YNmYuKawBmXkjDIPSDMHCTII7D
IIoC52pGTzznXE0uyUCBUPppoDJ7rcXshM+4fgSRm3O8Tsf1EzdJXK8dnlLmvFqTm/H4vZtcMS1F
XQDkh7ST+EmS0AYYK71lOuOZnb3d+Ye6IU1ZWnBSP8Y+mX0dBPjg4G2hRH0nudkq/YC7P/dYwEJu
qiMTtQMRBFM/il5+oJWssgUOvp+PpnPSh0jBZFba2HQ0J0Gb0GbYDtSGmQ0YEA/BFqlB/bJUxw4D
mPE6hXPxD87qWuSygmYgIe+VrpoUBDNkClGjFex6QCmTaMUhupEZYgYYdFMDGNnaN1XW0SgMfO99
CN86ONWcGZ4dG+ERGhIvhuwUSsibMBg5JDQitA0a7V+VFhI/jtvJEIw+OunwFngl40tDqH0R/5/k
wzGExvhw+9IOtZXWdXusdM6keD5q1cWXs8mUGwdNZOr+qzjEYcmyTPO6eei10ZwbKyu8xggFXm3Q
zKDpdVO9ME+w6ZrVBbwH03TBtsgyDQewWKdH9/qU0sTe9ujpo58Ph8NvDZg8aVQEAAA=

Wir verwenden Squid für den Proxy mit Connect-Tunneling unter Ubuntu 12.04, aber ich habe die Version nicht zur Hand.

@gravyboat Kannst du bitte auch das Skript ausführen, das @sigmavirus24 gepostet hat?

@dstufft Ich habe kein urllib3, sorry, habe gerade meinen obigen Beitrag bearbeitet, lass mich sehen, wie es installiert wird.

@dstufft Entschuldigung, hätte klarer sein sollen, es ist speziell packages.urllib3, das problematisch ist.

pip verwendet Anfragen, die urllib3 verwenden :) Das Anfrageskript, das die Leute früher ausprobiert haben, zeigt, dass dies nicht spezifisch für pip ist, also muss das Problem in Anfragen ODER urllib3 liegen, also wird uns das urllib3-Skript hoffentlich sagen, ob es ein urllib3-Problem ist oder ein Anfragen Problem.

@dstufft Die Probleme waren anscheinend ein Debian- (und daher Ubuntu-) Problem. Mit dem folgenden Skript wurde es behoben, vielleicht möchten Sie, dass @ sigmavirus24 seinen Beitrag auch bearbeitet:

from urllib3 import ProxyManager

proxy_url = 'http://localhost:8080'  # Just an example, place your proxy URL here please

pool = ProxyManager(proxy_url)
for i in range(100):
    print(i)
    pool.request("GET", "https://pypi.python.org/simple/", headers={'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*'}).read()

Ich habe die folgende Fehlermeldung erhalten:

Traceback (most recent call last):
  File "pip2_test.py", line 8, in <module>
    pool.request("GET", "https://pypi.python.org/simple/", headers={'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*'}).read()
  File "/usr/lib/python2.7/dist-packages/urllib3/response.py", line 193, in read
    e)
urllib3.exceptions.DecodeError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -2 while decompressing: inconsistent stream state',))

Scheint seltsam, dass urllib3 speziell mit Fastly ein Problem haben würde.

bearbeiten:

Das Skript funktioniert einwandfrei, wenn Sie auf https://google.com/ klicken .

@gravyboat das betrifft, dass sich das urllib3-Skript anders verhält als Anfragen. Haben Sie überprüft, ob Sie den richtigen Proxy verwendet haben? Es gibt keinen Grund, warum es fehlschlagen sollte, und Anforderungen würden dies nicht tun.

@sigmavirus24 Ja, ich habe für alle Tests denselben Proxy verwendet. Die einzige Konstante zwischen den fehlgeschlagenen Tests ist Fastly.

Ich bin auf dieses Problem gestoßen und es liegt an der Kommunikation zwischen Proxy und
pypi.python.org. Das python-request-Paket, das von pypa verwendet wird, stoppt
Verbindungen nach über 50 Sitzungen herstellen. Daher werden Sie mit diesem Problem konfrontiert.
Ich habe gerade versucht, den globalen pypi-Spiegel in einen der aktiven Spiegel zu ändern und
in der Lage, venv erfolgreich zu bauen.

Am Donnerstag, den 3. Juli 2014 um 8:02 Uhr schrieb Forrest [email protected] :

@sigmavirus24 https://github.com/sigmavirus24 Ja, ich habe denselben Proxy verwendet
für alle Prüfungen. Die einzige Konstante zwischen den fehlgeschlagenen Tests ist Fastly.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/pypa/pip/issues/1805#issuecomment -47860517.

Danke,
ICH K

@ik-dev das hilft uns nicht im Geringsten. Können Sie die Skripte ausführen, die @dstufft und ich oben gepostet haben, um uns zu helfen, festzustellen, warum dies passiert?

Das Problem wurde in der neuesten urllib3-Version 1.8.3 behoben. Das Requests-Team sollte die neueste Entwicklerversion in seinen Code aufnehmen (derzeit irgendwo zwischen 1.8.2 und 1.8.3). Ich werde sie fragen.

Ich habe mir tatsächlich die Zeit genommen, das Problem zu verfolgen und den Übeltäter gefunden. Das Problem war die Art und Weise, wie urllib3 poolmanager die httplib-Verbindung umschließt und die SSL-Tunnelinformationen für die Proxy-Umgebung anhängt:

https://github.com/kennethreitz/requests/blob/master/requests/packages/urllib3/connectionpool.py#L664 -L683

Der Pool erstellt ein neues HTTPSConnection-Objekt (eigentlich ein von Affen gepatchtes mit VerifiedHTTPSConnection) und stellt beim ersten Mal die direkte Verbindung zum Proxy-Host her. Die Verbindung wird im Pool für die nachfolgenden Aufrufe korrekt wiederverwendet und der Socket hat die richtigen Informationen (direkte Verbindung zum Proxy-Host, mit HTTP CONNECT-Tunnelmagie, die von httplib festgelegt wird).

Wenn Sie jedoch schließlich dieselbe Verbindung für große Downloads wie den Pypi-Index wiederverwenden, wird der Socket in httplib HTTPSConnection.getresponse() geschlossen. Dann verursachte der nächste Aufruf von HTTPSConnection.send() eine automatische Wiederverbindung, aber dann verloren wir den Kontext des Proxy-Setups, das im urllib3-Pool-Manager durchgeführt wurde, weil httplib davon keine Kenntnis hat (und diese Methoden nicht eingehakt waren durch die VerifiedHTTPSConnection von urllib3).

In der neuesten Version von urllib3 sehe ich, dass sie die automatische Wiederverbindung in den erstellten Sockets auf false setzen. Wenn also der Socket geschlossen wird, wird dem Pool mit _new_conn() eine neue Verbindung hinzugefügt.

Wenn Sie also diesen Fix testen möchten, installieren Sie einfach urllib3 per Pip und erstellen Sie dann einen Symlink zu dieser neueren Version von pip/_vendor/requests/packages/urllib3

@alexandrem Installierte urllib3 1.8.3 und führte das oben freigegebene Skript aus. Aber das Verhalten war das gleiche wie von @sigmavirus24 erwähnt

[root @khanibdev ~]# pip installiere urllib3
Herunterladen/Entpacken von urllib3
Herunterladen von urllib3-1.8.3.tar.gz (85kB): 85kB heruntergeladen
Ausführen von setup.py (Pfad:/tmp/pip_build_root/urllib3/setup.py) egg_info für Paket urllib3>
keine zuvor eingeschlossenen Verzeichnisse gefunden, die mit '_.pyc' übereinstimmen
Gesammelte Pakete installieren: urllib3
Ausführen von setup.py install für urllib3
keine zuvor eingeschlossenen Verzeichnisse gefunden, die mit '_.pyc' übereinstimmen
urllib3 erfolgreich installiert
Aufräumen...
[ root@khanibdev ~]# ./trial.py
0
Traceback (letzter Aufruf zuletzt):
Datei "./trial.py", Zeile 10, in
pool.request("GET", "https://pypi.python.org/simple/", headers={'Accept-Encoding': 'gzip, deflate', 'Accept': '_/_'}). lesen()
Datei „/usr/lib/python2.6/site-packages/urllib3/response.py“, Zeile 210, im Lesemodus
"Konnte es nicht entschlüsseln." % content_encoding, e)
urllib3.exceptions.DecodeError: ('Response with content-encoding: gzip erhalten, aber Fehler beim Decodieren.', error('Error -2 while decompression: inconsistent stream state',))

@ik-dev
Probieren Sie stattdessen dieses Skript aus

from urllib3 import ProxyManager

proxy_url = 'https://your_proxy:3128'  # Just an example, place your proxy URL here please

pool = ProxyManager(proxy_url)
for i in range(100):
    print(i)
    res = pool.request("GET", "https://pypi.python.org/simple/").read()

Wenn es funktioniert, können Sie eine neue Ausführung Ihrer „pip install -r requirements.txt“ mit einem Symlink zu dieser neueren urllib3 in Ihrer Pip-Installation versuchen, um zu bestätigen, dass alles in Ordnung ist.

Ich habe gerade das obige @alexandrem- Skript mit der neuesten Pypi-Version von urllib3 ausgeführt und es hat gut funktioniert.

Ich kann auch bestätigen, dass das Ersetzen der urllib3-Version im Anforderungsordner von pip durch einen Symlink zur neuesten urllib3 das Timeout-Problem behebt, wenn pip von einer großen requirements.txt-Datei installiert wird

Wenn ich jedoch das von @sigmavirus24 gepostete Skript ausführe, erhalte ich auch diesen Fehler:
urllib3.exceptions.DecodeError: ('Response with content-encoding: gzip erhalten, aber Fehler beim Decodieren.', error('Error -2 while decompression: inconsistent stream state',))

Ich habe pip gegabelt und urllib3 auf Version 3.1.9 (neueste auf pypi) aktualisiert und es funktioniert für uns, wenn wir ein Paket mit vielen Abhängigkeiten über einen Proxy installieren. Fühlen Sie sich frei, es zu versuchen.
https://github.com/ctxis/pip

Nur um es anzugeben, ich hatte das gleiche Problem, das Sie alle haben. Ich konnte es innerhalb von pip beheben, indem ich das Session-Pooling von Anfragen entfernte, indem ich bei jedem HTTP-GET eine neue PipSession() erzwang. Ich konnte es auch innerhalb von _vendor/requests/adapters.py beheben, indem ich DEFAULT_RETRIES von 0 auf 10 änderte. Der gegabelte Pip von @dgaus funktioniert auch einwandfrei, und das ist meine Zwischenlösung bis zu Pip-Updates. oh, wie ich wünschte, ich hätte diesen Thread früher gefunden, nach 2 vollen Arbeitstagen mit weit aufgerissenen Augen Debuggen und tcpdumping und ich unserem Proxy die Schuld gegeben habe. Ich hasse alles im Moment und ihr wisst alle was ich meine :)

Ich hatte die gleiche Erfahrung wie @pcraston : lief das Skript @alexandrem ohne Probleme (unter Verwendung von urllib3 v 1.9.0, installiert über pip) und @sigmavirus24 mit demselben Fehler (unter Verwendung von Anfragen 2.3.0).

Dasselbe Problem bei der Ubuntu-Installation, beim Versuch, "localshop" zu installieren. Gleiches Problem auf Windows-Workstation. Dort konnte ich req by req auf dem Terminal installieren.

Auf der "localshop"-Maschine trat das Problem (wie oben beschrieben) auf dem netaddr-Paket auf. Dann habe ich es alleine installiert, netaddr==0.7.10, und mehrere andere, dann konnte ich meine Localshop-Installation abschließen.

Ja, es ist eine Unternehmens-Firewall und ich kann meine Umgebung nicht ändern.

Wenn urllib3 das Problem tatsächlich löst, können wir, wenn wir eine Bestätigung erhalten, wahrscheinlich mit dem Requests-Team zusammenarbeiten, um eine Patch-Veröffentlichung mit diesem enthaltenen zu erhalten, damit wir dasselbe vor 1.6 tun können.

Ich habe einen Snapshot von Anfragen gegabelt und ihn dann in einem devpi virtualenv ersetzt, um meine Probleme mit devpi zu lösen.

…/bin/pip install -U "https://github.com/jhermann/requests/archive/proxy-fixed-for-devpi.zip#egg=requests"

Ich habe versucht, dies auf einem Produktionsprüfstand zum Laufen zu bringen. Ich denke, ProxyManager funktioniert nicht, wenn Ihr Proxy "Benutzername/Passwort" verwendet, um den Proxy zu verwenden.

Traceback (most recent call last):
  File "test.py", line 8, in <module>
    pool.request("GET", "https://pypi.python.org/simple/", headers={'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*'}).read()
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/request.py", line 68, in request
    **urlopen_kw)
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/request.py", line 81, in request_encode_url
    return self.urlopen(method, url, **urlopen_kw)
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/poolmanager.py", line 261, in urlopen
    return super(ProxyManager, self).urlopen(method, url, redirect=redirect, **kw)
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/poolmanager.py", line 153, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 579, in urlopen
    release_conn=release_conn, **response_kw)
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 579, in urlopen
    release_conn=release_conn, **response_kw)
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 579, in urlopen
    release_conn=release_conn, **response_kw)
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/connectionpool.py", line 559, in urlopen
    _pool=self, _stacktrace=stacktrace)
  File "/appl/envprod/local/lib/python2.7/site-packages/urllib3/util/retry.py", line 265, in increment
    raise MaxRetryError(_pool, url, error)
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 407 authenticationrequired',)))

Welche Version von urllib3 ist das?

Ich wollte nur erwähnen, dass ich darauf gestoßen bin. Ich denke, auch pip 1.5.4 hat auf dem System eine virtuelle Umgebung erstellt. Versuchen Sie, pip install -r req.pip durch einen Proxy (tinyproxy) zu bekommen

Auszeit: (, 'Zeitüberschreitung bei Verbindung mit pypi.python.org. (Verbindungszeitüberschreitung=15)')

In der virtuellen Umgebung habe ich Pip auf Pip 1.4.1 heruntergestuft und es funktioniert jetzt

Ich stoße auf das gleiche Problem, wenn ich versuche, meine App auf Docker mit dem Image „ ubuntu:14.04 “ und „python3-pip“, Version 1.5.6, bereitzustellen. In meinem Fall weiß ich nicht, wie ich Pip 1.4 auf meinem Ubuntu-Image haben soll. Irgendein Hinweis?

Der beste Weg wäre, Ihre Distribution Pip zu verwenden, um eine andere Pip-Version zu installieren
:

pip install -U pip==1.4

Le vendredi 21. November 2014, Davi Garcia [email protected] a
Schrift :

Ich habe das gleiche Problem, wenn ich versuche, meine App auf Docker bereitzustellen
Verwenden Sie das Image „ ubuntu:14.04 “ und „python3-pip“, die Version 1.5.6. Auf meinem
In diesem Fall weiß ich nicht, wie ich Pip 1.4 auf meinem Ubuntu-Image haben soll. Irgendein Hinweis?


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/pypa/pip/issues/1805#issuecomment -64029177.

Alexandre

ein weiteres +1 dafür, dass der Fix dafür so schnell wie möglich in eine Pip-Veröffentlichung aufgenommen wurde

Das betrifft auch mich. Die Verwendung eines langsamen MITM-SSL-Proxys führt unabhängig vom Wert von --default-timeout immer zu einer Zeitüberschreitung.

Ich habe einige Zeit damit verbracht, Anfragen und urllib3 zu halbieren, und das Problem scheint im Upstream behoben zu sein.

Insbesondere wurde das Problem in shazow/ urllib3@1c30a1f3a4af9591f480a338f75221bdf5ca48da behoben , das in 1.8.3 veröffentlicht wurde, das auf Anfrage in 2.4.0 angeboten wurde, das wiederum in 6.0 von pip angeboten wurde.

Die Verwendung einer betroffenen Version von Anfragen schlägt zuverlässig fehl, den Proxy zu verwenden, nachdem 24 Get-Anforderungen an pypi und Pip verwendet wurden, schlägt zuverlässig fehl, den Proxy zu verwenden, nachdem 12 Pakete installiert wurden. Ein Upgrade behebt das Problem für mich.

Es ist in Pip 1.6 behoben

Jeder sollte upgraden :)

Am Sonntag, den 19. Januar 2015, Stratos Moros [email protected] , schriftlich:

Ich habe einige Zeit damit verbracht, Anfragen und urllib3 zu halbieren, und das Problem scheint es zu sein
stromaufwärts fixiert werden.

Insbesondere wurde das Problem in shazow/ urllib3@1c30a1f behoben
https://github.com/shazow/urllib3/commit/1c30a1f3a4af9591f480a338f75221bdf5ca48da ,
die in 1.8.3 veröffentlicht wurde, die durch Anfragen in 2.4.0 angeboten wurde, die
wurde wiederum von Pip in 6.0 angeboten.

Die Verwendung einer betroffenen Version von Anforderungen schlägt zuverlässig fehl, den Proxy zu verwenden
nach 24 Abrufen von Anfragen an pypi und pip wird der Proxy danach nicht zuverlässig verwendet
12 Pakete wurden installiert. Ein Upgrade behebt das Problem für mich.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/pypa/pip/issues/1805#issuecomment -70536334.

Alexandre

Schließe dies, da es in Pip 6.x behoben ist.

Ich sehe ein identisches Verhalten zu dem, was alle hier in Pip 7.1 (standardmäßig mit dem Installationsprogramm für Python 2.7.10 installiert) unter Windows 7 melden. Ist dies dasselbe Problem? Wurde das unter Windows behoben?

Ich bekomme dieses Problem auch innerhalb unseres Firmen-Windows-Netzwerks mit verschiedenen Pip-Versionen.

Mit pip 6.0.8 von C:\Python34\lib\site-packages (Python 3.4) erhalte ich diese Ausgabe auf der Konsole:

C:\src\set>c:\Python34\Scripts\pip.exe install cx_Freeze
Collecting cx-Freeze
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connec
tion broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connectio
n failed: 407 Proxy Authentication Required ( The ISA Server requires authorizat
ion to fulfill the request. Access to the Web Proxy filter is denied.  )',))': /
simple/cx-freeze/
  Could not find any downloads that satisfy the requirement cx-Freeze
  No distributions at all found for cx-Freeze

Mit pip 1.0.1 von c:\python27\lib\site-packages (python 2.7) habe ich diesen Inhalt der pip.log-Datei erhalten:==

C:\Python27\Scripts\pip-script.py run on 08/11/15 16:36:48
Downloading/unpacking cx-Freeze
  Getting page http://pypi.python.org/simple/cx_Freeze
  Could not fetch URL http://pypi.python.org/simple/cx_Freeze: HTTP Error 407: Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied.  )
  Will skip URL http://pypi.python.org/simple/cx_Freeze when looking for download links for cx-Freeze
  Getting page http://pypi.python.org/simple/
  Could not fetch URL http://pypi.python.org/simple/: HTTP Error 407: Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied.  )
  Will skip URL http://pypi.python.org/simple/ when looking for download links for cx-Freeze
  Cannot fetch index base URL http://pypi.python.org/simple/
  URLs to search for versions for cx-Freeze:
  * http://pypi.python.org/simple/cx_Freeze/
  Getting page http://pypi.python.org/simple/cx_Freeze/
  Could not fetch URL http://pypi.python.org/simple/cx_Freeze/: HTTP Error 407: Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied.  )
  Will skip URL http://pypi.python.org/simple/cx_Freeze/ when looking for download links for cx-Freeze
  Could not find any downloads that satisfy the requirement cx-Freeze
No distributions at all found for cx-Freeze
Exception information:
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\pip\basecommand.py", line 126, in main
    self.run(options, args)
  File "C:\Python27\lib\site-packages\pip\commands\install.py", line 223, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "C:\Python27\lib\site-packages\pip\req.py", line 954, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "C:\Python27\lib\site-packages\pip\index.py", line 152, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
DistributionNotFound: No distributions at all found for cx-Freeze

Dies ist immer noch ein Problem in der Pip-Version 7.1.2.

Ich sehe es jedoch für index_urls.

Wenn Sie beispielsweise versuchen, Pandas aus einem Index herunterzuladen, benötigen Pandas numpy, welches Pip dann versucht, von PYPI anstelle der angegebenen index_url zu erhalten

Details sind:

Python 2.7
Pip 7.1.2
RedHat Centos 6.6

@AndiEcker , hast du eine Lösung für dieses Problem gefunden? Sogar ich stehe in meinem Büro vor dem gleichen Problem. Schätze deine Hilfe sehr.

Das ist der Fehler:

  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connec
tion broken by 'ConnectTimeoutError(<pip._vendor.requests.packages.urllib3.conne
ction.VerifiedHTTPSConnection object at 0x00000000033A19E8>, 'Connection to pypi
.python.org timed out. (connect timeout=15)')': /simple/pydicom/

@iamnagesh : Die Lösung für meinen Fall war, dass unser Netzwerkadministrator mir ohne Proxy Zugang zum Internet geben musste.

Aber Ihre Fehlermeldung sieht sowieso anders aus - sorry, aber ich weiß nicht, warum Ihre Verbindung einen Timeout-Fehler anzeigt - wenn Sie eine langsame Internetverbindung haben, versuchen Sie vielleicht, das Timeout zu erhöhen (leider weiß ich nicht, wie das geht) .

Für die vorherigen Fehler im Zusammenhang mit der HTTP-Proxy-Authentifizierung über NTLM würde ich die Verwendung von cntlm als Workaround vorschlagen.

Das lokale Festlegen mit einem NTLM-Hash für Ihr Proxy-Passwort löst wirklich viele verschiedene Probleme mit Apps und Bibliotheken, die http/https-Proxys von Unternehmen nicht sehr gut unterstützen.

Sie müssen nur Ihre Proxy-Env-Variablen und App-Einstellungen auf http://localhost :3128 setzen

@iamnagesh Ich habe den gleichen Fehler, wenn ich ein Paket über pip in der Anaconda-Eingabeaufforderung installiere.
Ich habe die Umgebungsvariablen HTTP und HTTPS für Proxy eingerichtet. Ich habe immer noch denselben Fehler. Können Sie bitte sagen, was Sie getan haben, um das Problem zu lösen.

@ashi-taka: In meinem Fall haben es unsere Netzwerkadministratoren für mich behoben und AFAIR die Lösung
war, dass unsere Netzwerkadministratoren alle Proxys in unserem Unternehmen vollständig entfernt haben
Netzwerk.

2016-04-06 6:00 GMT+01:00 ashi-taka [email protected] :

@AndiEcker https://github.com/AndiEcker Ich stehe vor dem gleichen Fehler
während der Installation eines Pakets über Pip in der Anaconda-Eingabeaufforderung.
Ich habe die Umgebungsvariablen HTTP und HTTPS für Proxy eingerichtet. Ich habe es trotzdem
gleicher Fehler. Können Sie bitte sagen, was Sie getan haben, um das Problem zu lösen.


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/pypa/pip/issues/1805#issuecomment -206118777

Obwohl die Proxy-Konfiguration auf Systemebene hinzugefügt wurde, gab _pip_ aus irgendeinem Grund den Fehler _ [Errno 101] Network is unreachable _ aus.

Die Verwendung der Proxy-Option hat das Problem behoben. (Dank an @pcraston )

sudo pip install pandas --proxy= proxy:8080

Ubuntu 14.04
Pip 8.1.2

Das Ausführen von pip mit --isolated key löste das Problem für mich.
Pip3 8.1.1

Habe die gleichen Fehler mit Pip 9.0.1 @ Windows 10
Das Problem war mit dem Proxy, es wurde auf systemweiter Ebene als "" (leer, aber als verwendeter Proxy gekennzeichnet) festgelegt.

[Update] Es hat funktioniert!


Hallo zusammen
kann mir jemand helfen? Ich habe versucht, mkdocs zu installieren, und habe diesen Fehler erhalten:

C:Benutzer\Lenovo Local>pip install mkdocs
mkdocs sammeln
Wiederholen (Retry(total=4, connect=None, read=None, Redirect=None)) nachdem die Verbindung durch 'ConnectTimeoutError(, 'Zeitüberschreitung bei Verbindung mit pypi.python.org. (Verbindungszeitüberschreitung=15)')': /simple/mkdocs/
...
@alexandrem diese Lösung funktioniert nicht mehr, weil Zeile 209 leer ist - irgendeine andere Idee??
(Kommentiert am 2. Juli 2014) Ich füge der Bedingung in Zeile 209 der adapter.py einfach ein True hinzu, um immer eine ProxyManager-Instanz zu erstellen, wodurch die Pool-Manager-Logik übersprungen wird.

Python 3.5.3
Pip 9.0.1
Danke.

Hallo, ich kann lightgbm nicht in Spyder installieren. Ich erhalte den folgenden Fehler ... würde mich über jede Hilfe freuen, um dies zu beheben. Ja, es gibt einen Proxy bei der Arbeit. Danke..!

Wiederholen (Retry(total=4, connect=None, read=None, Redirect=None)) nachdem die Verbindung durch 'NewConnectionError(' unterbrochen wurde: Neue Verbindung konnte nicht hergestellt werden: [Errno 11002] getaddrinfo failed',)': /simple/lightgbm/

Nun, anscheinend haben Sie DNS-Probleme, gegen die Pip nichts tun kann. Versuchen Sie auch, das Anhängen an geschlossene Tickets zu vermeiden, da dies die Dinge immer intransparent macht.

pip install -U Anforderung --proxy=my_proxy :port

es funktionierte!!

Hallo Senani, hat bei mir nicht funktioniert. Habe ich richtig codiert? Nehmen wir an, ich muss das implizite Modile herunterladen.

pip install implizit --proxy=sm_proxy :xx28

Außerdem bin ich hinter einer Pacs-Firewall. Jedes Mal, wenn ich das Internet nutzen möchte, muss ich Login und Passwort eingeben.

Danke vielmals.

Ich hatte also ein ähnliches Problem, bei dem es nur bei Pip-Installationen von Git Repo fehlschlug. Dies schlug nur fehl, als ich mich hinter einem Proxy befand. Ich konnte es nicht für Git-Installationen über http lösen. Am Ende habe ich meine Installation geändert, um ssh zu verwenden, was für meine Umgebung funktioniert hat.

Funktioniert hinter Proxy

pip install git+ssh://[email protected]/path/to/repo@tag#egg=package-name

Funktioniert nicht hinter Proxy

pip install git+git://github.com/path/to/repo@tag#egg=package-name

Der folgende Pip-Befehl hat bei mir funktioniert.

sudo pip --proxy http://proxy_username:proxy_password@proxyhost :port installieren

In meinem Fall war das Problem mit der Variablen PIP_INDEX_URL .
--isolated hat geholfen.

Das Flag --isolated hat bei mir funktioniert, wenn ich mich nicht hinter einem Proxy befinde, aber der Fehler Cannot connect to Proxy immer wieder auftaucht!

Probieren Sie einfach das Folgende aus
pip install --proxy=user:pass<strong i="6">@server</strong>:port <package Name>

zum Beispiel
pip install --proxy=http://10.10.10.150/accelerated_pac_base.pac quandl

In meinem Fall funktionieren beide Lösungen:

  • setze Proxy in Pip pip install --proxy=user:pass<strong i="7">@server</strong>:port <package Name>
  • oder HTTP_PROXY & HTTPS_PROXY und dann pip install <package Name> einstellen

In meinem Fall funktionieren beide Lösungen:

  • setze Proxy in Pip pip install --proxy=user:pass<strong i="8">@server</strong>:port <package Name>
  • oder HTTP_PROXY & HTTPS_PROXY und dann pip install <package Name> einstellen

Ich hatte bereits http_proxy und https_proxy eingestellt, bekam aber Verbindungsfehler. Das einfache Einrichten von HTTP_PROXY und HTTPS_PROXY hat für mich funktioniert.

Ich konnte das Problem lösen, indem ich die Ressourcen auf meinem Proxyserver erhöhte. Anfänglich lief mein Proxy-Server mit 2 „Servern“ und erlaubte 5 „Client“-Verbindungen. Nach der Erhöhung auf 10 Server und 20 Client-Verbindungen installierte Pip die Pakete perfekt.

Dieser Thread wurde automatisch gesperrt, da es nach seiner Schließung keine Aktivitäten mehr gegeben hat. Bitte öffnen Sie ein neues Problem für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen