Die Verwendung pip install
für ein beliebiges Modul auf meinem Ubuntu 16.04-System mit Python 2.7.11+ löst diesen Fehler aus:
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
Was ist los mit pip? Wie kann ich es bei Bedarf neu installieren?
Update: Vollständiger Traceback ist unten
sunny@sunny:~$ pip install requests
Collecting requests
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 209, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 328, in run
wb.build(autobuilding=True)
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 748, in build
self.requirement_set.prepare_files(self.finder)
File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 360, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 512, in _prepare_file
finder, self.upgrade, require_hashes)
File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 273, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "/usr/lib/python2.7/dist-packages/pip/index.py", line 442, in find_requirement
all_candidates = self.find_all_candidates(req.name)
File "/usr/lib/python2.7/dist-packages/pip/index.py", line 400, in find_all_candidates
for page in self._get_pages(url_locations, project_name):
File "/usr/lib/python2.7/dist-packages/pip/index.py", line 545, in _get_pages
page = self._get_page(location)
File "/usr/lib/python2.7/dist-packages/pip/index.py", line 648, in _get_page
return HTMLPage.get_page(link, session=self.session)
File "/usr/lib/python2.7/dist-packages/pip/index.py", line 757, in get_page
"Cache-Control": "max-age=600",
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/sessions.py", line 480, in get
return self.request('GET', url, **kwargs)
File "/usr/lib/python2.7/dist-packages/pip/download.py", line 378, in request
return super(PipSession, self).request(method, url, *args, **kwargs)
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "/usr/share/python-wheels/CacheControl-0.11.5-py2.py3-none-any.whl/cachecontrol/adapter.py", line 46, in send
resp = super(CacheControlAdapter, self).send(request, **kw)
File "/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests/adapters.py", line 376, in send
timeout=timeout
File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 610, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/util/retry.py", line 228, in increment
total -= 1
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
pip
Normalerweise würde ein eingebettetesrequests
Paket verwendet, undrequests
normalerweise würde ein eingebettetesurllib3
Paket verwendet. Diese Räder sind keine eingebetteten Versionen und wahrscheinlich nicht mit derpip
Unterklasse einiger dieser Codes kompatibel . bewegen/usr/share/python-wheels
beiseite vielleicht?pip
,pip/_vendor/requests/
undpip/_vendor/requests/packages/urllib3/
, nicht/usr/share/python-wheels/requests-2.9.1-py2.py3-none-any.whl/requests
oder zu verwenden/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3
.requests
undpip
bettet ihre Abhängigkeiten ein. Ihr Traceback zeigt, dass keine eingebetteten Versionen verwendet werden, aber warum das so ist, weiß ich nicht.Antworten:
Ubuntu wird mit einer PIP-Version von Precambrian geliefert. Auf diese Weise müssen Sie ein Upgrade durchführen, wenn Sie nicht stundenlang Probleme mit Pips beheben möchten.
Wie Sie bemerkt haben, habe ich Informationen für Python 2.x und 3.x hinzugefügt
quelle
pip
, das seit mehreren Veröffentlichungen nicht mehrWenn Sie sich hinter einem Proxy befinden, müssen Sie einige zusätzliche Konfigurationsschritte ausführen, bevor Sie mit der Installation beginnen. Sie müssen die Umgebungsvariable http_proxy auf die Proxy-Adresse setzen. Mit bash wird dies mit dem Befehl erreicht
Sie können auch die
Parameter zu pip. Der
[user:pass@]
Teil ist optional.quelle
Das Aktualisieren von setuptools hat für mich gut funktioniert.
quelle
Erstens besteht dieses Problem aufgrund von Netzwerkproblemen, und die Deinstallation und Neuinstallation von allem ist keine große Hilfe. Wahrscheinlich stehen Sie hinter dem Proxy, und in diesem Fall müssen Sie den Proxy festlegen.
Aber in meinem Fall stand ich vor dem Problem, weil ich nicht hinter dem Proxy stand. Im Allgemeinen arbeite ich hinter dem Proxy, aber wenn ich von zu Hause aus arbeite, setze ich den Proxy in den Netzwerkeinstellungen auf Keine.
Aber ich bekam immer noch die gleichen Fehler, selbst nachdem ich die Proxy-Einstellungen entfernt hatte.
Also, als ich getippt habe
Ich habe so etwas gefunden:
Und dies war der Grund, warum ich immer noch den gleichen Fehler bekam, selbst wenn ich dachte, ich hätte die Proxy-Einstellungen entfernt.
Geben Sie Folgendes ein, um diesen Proxy zu deaktivieren
Gehen Sie für alle anderen Einträge wie https_proxy genauso vor.
quelle
Was hier passiert, ist, dass die verkauften Versionen von request / urllib3 beim Import an zwei verschiedenen Stellen (gleicher Code, aber unterschiedliche Namen) zusammenstoßen. Wenn Sie dann einen Netzwerkfehler haben, wird nicht versucht, das Rad zu erhalten, sondern der oben genannte Fehler schlägt fehl. Siehe hier für ein tieferes Eintauchen in diesen Fehler.
Für die Lösung mit Systempip siehe oben .
Wenn Sie dieses Problem in einer virtuellen Umgebung haben, die von erstellt wurde
python -m venv
(die die Räder immer noch kopiert/usr/share/python-wheels
, selbst wenn Sie Pip separat installiert haben), scheint der einfachste Weg, dies zu "beheben", zu sein:/usr/bin/python3.6 -m venv ...
requests
in der Umgebung (dies kann den obigen Fehler auslösen):<venv>/bin/pip install requests
requests
, die von pip verwendet werden:rm <venv>/share/python-wheels/{requests,chardet,urllib3}-*.whl
Jetzt
<venv>/bin/pip
verwendet a die installierte Version, vonrequests
der urllib3 verkauft wurde.quelle
/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl
und es ist jetzt behoben (ohne virtualenv)./usr/share/python-wheels
,python -m venv
wird keine verwendbare<venv>/bin/pip
mehr erstellt. Wenn Sie diese Dateien entfernen, sollten Sie sicher sein, dass Sie sie nicht benötigen. Wenn Sie sowohl einen System-Pip als auch einen Venv-Pip benötigen, müssen Sie den System-Pip mitget-pip.py
(siehe stackoverflow.com/a/37531821/1380673 ) installieren und die whl-Dateien in jedem Venv entfernen.Port 443 ist nicht geöffnet. Lassen Sie einfach den benutzerdefinierten TCP-Port 443 zu, wenn Sie unter AWS den Port 443 für die ausgehenden Verbindungen öffnen.
quelle
Nur Upgrade Pip hat bei mir funktioniert:
pip install --upgrade pip
quelle
Ich habe das gleiche Problem bei der Installation eines RaspberryPI TFT von Adafruit mit pitft.sh / adafruit-pitft.sh .
Ich bin nicht glücklich über Codierungsstile mit Fehlern von irgendwoher, die irgendwie interpretiert werden können - wie aus den vorherigen Antworten hervorgeht.
Anmerkung: Die Typfehlerausnahme von retry.py ist offensichtlich ein Fehler, der durch eine unangemessene Zuweisung und Berechnung einer Instanz der Klasse Reply to a int mit dem Standardwert 10 verursacht wird - irgendwo im Code ... Sollte auch behoben werden durch Hinzufügen eines Inplace-Operators oder Korrigieren der fehlerhaften Zuordnung.
Also habe ich zuerst versucht, den Fehler selbst zu analysieren und zu patchen. Der eigentliche Fehler in meinem Fall ist der gleiche - retry.py wird von pip aufgerufen .
Das Installationsskript adafruit-pitft.sh / pitft.sh versucht, urllib3 anzuwenden, das selbst versucht, verschachtelte Abhängigkeiten von pip zu installieren , also der gleiche Fehler.
https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/blob/master/adafruit-pitft.sh
https://github.com/adafruit/Raspberry-Pi-Installer-Scripts
Für die aktuelle Distribution (basierend auf Debian-9.6.0 / Stretch):
Der folgende - schmutzige * :) - Patch aktiviert eine klingende Fehlersuche:
Die klingende Ausgabe mit dem temporären Patch ist (zweimal angezeigt ...?):
In meinem Fall verursachen zwei Dinge den Fehler. Dies kann in anderen Umgebungen variieren:
Meine Installationsumgebung ist offline von einem internen Debian + Raspbian-Spiegel, daher möchten Sie den Proxy nicht festlegen ...
Also fuhr ich mit der manuellen Installation der fehlenden Komponente evdev fort :
evdev von PyPI herunterladen (oder zB von github.com):
https://pypi.org/project/evdev/
https://files.pythonhosted.org/packages/7e/53/374b82dd2ccec240b7388c65075391147524255466651a14340615aabb5f/evdev-1.1.2.tar.gz
Entpacken und manuell als Root- Benutzer installieren - für alle lokalen Konten, die als installiert erkannt wurden:
Rufen Sie das Installationsskript erneut auf:
Wenn Sie online über einen direkten PyPI- Zugriff fortfahren :
Überprüfen Sie Ihr Routing + Ihre Firewall auf Zugriff auf pypi.org
Legen Sie bei Bedarf einen Proxy fest (http_proxy / https_proxy).
Und es funktioniert..
Hoffe das hilft auch in anderen Fällen.
Arno-Can Uestuensoez
----------------------------------------------
Siehe auch: Problem - 35334: https://bugs.python.org/issue35334
----------------------------------------------
Siehe jetzt auch: Ausgabe - 1486: https://github.com/urllib3/urllib3/issues/1486
Für Datei: https://github.com/urllib3/urllib3/blob/master/src/urllib3/util/retry.py
quelle
Suchen Sie nach Netzwerkproblemen, um den Ausnahmefallcode zu umgehen
In meinem Fall habe ich einen benutzerdefinierten Index verwendet, dieser Index hatte keine Route und würde den Ausnahmefallcode auslösen. Der Fehler im Ausnahmefall besteht immer noch und maskiert immer noch das eigentliche Problem. Ich konnte dies jedoch
nc -vzw1 myindex.example.org 443
umgehen, indem ich die Konnektivität mit anderen Tools testete und es erneut versuchte, wenn das Netzwerk aktiv war.quelle
Beim Versuch, das awscli-Tool auf der ec2-Instanz zu installieren, trat ein ähnliches Problem auf. Ich habe die Sicherheitsgruppe geändert, um den eingehenden und ausgehenden Zugriff auf Port 443 zuzulassen, und das hat das Problem für mich gelöst.
quelle
Ich habe diesen Fehler erhalten, als ich versucht habe, einen
virtualenv
with-Befehl zu erstellenvirtualenv myVirtualEnv
. Ich habe geradesudo
vor dem Befehl ein hinzugefügt . es hat alles gelöst.quelle
Lösung:
1.
sudo apt remove python-pip
2.
pip3 install pip
(oder installieren Sie pip mit get-pip.py )Warum:
Dieser Fehler trat bei Pip 8.0.1 auf, das von apt-get installiert wurde. Und geschah nur, wenn Ihr Netzwerk instabil ist.
Wenn Sie einen Pip mit apt installiert haben, wird der von Ihnen installierte Pip auf andere Weise ausgeblendet. Entfernen Sie daher zuerst den apt.
Ich habe das Netzwerk getrennt und 8.0.1, 9.0.3, 10.x der 3 mit pip3 oder get-pip.py installierten Versionen getestet. Es ist kein Fehler aufgetreten. Ich denke, nur die passende Version von Pip 8.0.1 hat diesen Fehler, die anderen sind in Ordnung.
quelle
In meinem Fall hatte ich Pycharm im Sudo-Modus geöffnet und führte pip install nltk im Pycharm-Terminal aus, was diesen Fehler zeigte. Das Ausführen mit sudo pip install behebt den Fehler.
quelle
Ich hatte auch dieses Problem. Zunächst wurde ein Proxy eingerichtet, der einwandfrei funktioniert. Dann habe ich mich mit einem Netzwerk verbunden, in dem es keinen Proxy gibt. Nach dem Deaktivieren von Proxy-Pip wieder funktioniert.
quelle
Seltsamerweise funktioniert es für mich, wenn ich den Proxy aus der Umgebung entferne und ihn zur Befehlszeile hinzufüge. Zum Beispiel, um sich
pip
selbst zu aktualisieren :Mein Problem war, den Proxy in der Umgebung zu haben. Es scheint, dass pip nur den Streitenden ehrt.
quelle
Dies ist die funktionierende Lösung für dieses Problem, das ich gefunden habe.
quelle
Für mich stellt sich heraus, dass wlan0 nicht verfügbar war, was dazu führte, dass ich keine Verbindung herstellen konnte. Um sicherzustellen, dass wlan0 aktiv war, konnte pip / pip3 problemlos funktionieren.
quelle
Ich habe die oben beantwortete Lösung ausprobiert:
Als ich es versuchte
Ich habe diese Nachricht erhalten
Ich habe folgendes getan und es funktioniert
quelle