Urllib2 für Python 3.5.1 muss installiert werden

100

Ich verwende Python 3.5.1 für Mac. Ich möchte urllib2Modul verwenden. Ich habe versucht, es zu installieren, aber mir wurde gesagt, dass es in urllib.requestund urllib.errorfür Python 3 aufgeteilt wurde.

Mein Befehl (wird vorerst aus dem Framework-Bin-Verzeichnis ausgeführt, da er sich nicht in meinem Pfad befindet):

sudo ./pip3 install urllib.request

Gibt Folgendes zurück:

Could not find a version that satisfies the requirement urllib.request (from versions: )
No matching distribution found for urllib.request

Ich habe den gleichen Fehler erhalten, als ich versuchte, urllib2auf einen Schlag zu installieren .

Eamonn Gormley
quelle
2
Können Sie nicht einfach urllib.requestin Ihr Python-Programm importieren ?
Michaelpri
3
urllib.request ist Teil der Standardbibliothek und muss nicht installiert werden.
Daniel Roseman
urllib ist Teil der Standardbibliothek, enthält aber nur ein Analysepaket. Ich konnte keine Anfrage darin finden ...
Devendra Bhat

Antworten:

169

WARNUNG : Sicherheitsuntersuchungen haben auf PyPI mehrere vergiftete Pakete gefunden , darunter ein Paket mit dem Namenurllib, das bei der Installation nach Hause telefoniert. Wenn Sie pip install urllibeinige Zeit nach Juni 2017 verwendet haben, entfernen Sie das Paket so bald wie möglich .

Sie können nicht und Sie müssen nicht.

urllib2ist der Name der in Python 2 enthaltenen Bibliothek. Sie können stattdessen die in Python 3 enthaltene urllib.requestBibliothek verwenden. Die urllib.requestBibliothek funktioniert genauso wie urllib2in Python 2. Da sie bereits enthalten ist, müssen Sie sie nicht installieren.

Wenn Sie einem Tutorial folgen, das Sie zur Verwendung urllib2auffordert, werden Sie feststellen, dass Sie auf weitere Probleme stoßen. Ihr Tutorial wurde für Python 2 geschrieben, nicht für Python 3. Suchen Sie ein anderes Tutorial oder installieren Sie Python 2.7 und setzen Sie Ihr Tutorial für diese Version fort. Sie finden, urllib2kommt mit dieser Version.

Alternativ können Sie die requestsBibliothek für eine übergeordnete und benutzerfreundlichere API installieren . Es funktioniert sowohl mit Python 2 als auch mit Python 3.

Martijn Pieters
quelle
23
Danke, dann könnte ich gebrauchen:import urllib.request as urllib2
MewX
Pip wird also nicht gegen Malware moderiert?
igor
3
@igor: pipist ein Befehlszeilentool, mit dem Pakete von überall aus erkannt und geladen werden können. PyPI.org, der Standardpaketindex pip, wird nicht moderiert. Die Python Software Foundation ist eine freiwillige Organisation und kann möglicherweise nicht einmal anfangen, die Menge an Code zu moderieren.
Martijn Pieters
Vielen Dank für die Heads-Ups
B Furtado
28

Gemäß den Dokumenten :

Hinweis Das urllib2-Modul wurde in Python 3 auf mehrere Module mit dem Namen urllib.requestund aufgeteilt urllib.error. Das 2to3-Tool passt Importe automatisch an, wenn Sie Ihre Quellen in Python 3 konvertieren.

Es scheint also unmöglich zu sein, das zu tun, was Sie wollen, aber Sie können entsprechende Python3-Funktionen von verwenden urllib.request.

Ilya V. Schurov
quelle
6

In Python 3 urllib2wurde durch zwei eingebaute Module mit dem Namen urllib.requestund ersetzturllib.error

Aus der Quelle angepasst


Ersetzen Sie dies also:

import urllib2

Mit diesem:

import urllib.request as urllib2
Aryan Beezadhur
quelle