Musisz zainstalować urllib2 dla Pythona 3.5.1

100

Używam Pythona 3.5.1 dla komputerów Mac. Chcę użyć urllib2modułu. Próbowałem go zainstalować, ale powiedziano mi, że został podzielony na urllib.requesti urllib.errordla Pythona 3.

Moje polecenie (na razie uruchomione z katalogu bin frameworka, ponieważ nie ma go w mojej ścieżce):

sudo ./pip3 install urllib.request

Zwraca to:

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

Otrzymałem ten sam błąd wcześniej, gdy próbowałem zainstalować urllib2za jednym zamachem.

Eamonn Gormley
źródło
2
Czy nie możesz po prostu zaimportować urllib.requestdo programu w Pythonie?
michaelpri
3
urllib.request jest częścią standardowej biblioteki i nie wymaga instalacji.
Daniel Roseman
urllib jest częścią std biblioteki, ale zawiera tylko pakiet składniowy, że nie byłem w stanie znaleźć wniosek w tym ....
Devendra Bhat

Odpowiedzi:

169

OSTRZEŻENIE : Badania bezpieczeństwa wykryły kilka zatrutych pakietów na PyPI , w tym pakiet o nazwieurllib, który po zainstalowaniu będzie dzwonił do domu. Jeśli korzystałeś pip install urllibjakiś czas po czerwcu 2017, usuń ten pakiet tak szybko, jak to możliwe .

Nie możesz i nie musisz.

urllib2to nazwa biblioteki zawartej w Pythonie 2. Zamiast tego można użyć urllib.requestbiblioteki dołączonej do Pythona 3. urllib.requestBiblioteka działa w ten sam sposób urllib2działa w Pythonie 2. Ponieważ jest już zawarte nie trzeba go zainstalować.

Jeśli postępujesz zgodnie z samouczkiem, który mówi ci o użyciu urllib2, zobaczysz, że napotkasz więcej problemów. Twój samouczek został napisany dla Pythona 2, a nie dla Pythona 3. Znajdź inny samouczek lub zainstaluj Python 2.7 i kontynuuj samouczek w tej wersji. Znajdziesz urllib2pochodzi z tą wersją.

Alternatywnie, zainstaluj requestsbibliotekę dla wyższego poziomu i łatwiejszego w użyciu API. Będzie działać zarówno na Pythonie 2, jak i 3.

Martijn Pieters
źródło
24
Dzięki, wtedy mogłem użyć:import urllib.request as urllib2
MewX
więc pip nie jest moderowany pod kątem złośliwego oprogramowania?
igor
3
@igor: pipto narzędzie wiersza poleceń, które może wykrywać i ładować pakiety z dowolnego miejsca. PyPI.org, domyślny indeks pakietów pip, nie jest moderowany. Python Software Foundation jest organizacją prowadzoną przez wolontariuszy i nie może nawet zacząć moderować ilości zaangażowanego kodu.
Martijn Pieters
Dziękuję za heads-up
B Furtado
28

Zgodnie z dokumentacją :

Uwaga Moduł urllib2 został podzielony na kilka modułów w Pythonie 3 o nazwach urllib.requesti urllib.error. Narzędzie 2to3 automatycznie dostosuje import podczas konwersji źródeł do Python 3.

Wygląda więc na to, że nie można zrobić tego, co chcesz, ale możesz użyć odpowiednich funkcji python3 z urllib.request.

Ilya V. Schurov
źródło
6

W Pythonie 3 urllib2został zastąpiony przez dwa wbudowane moduły o nazwach urllib.requestiurllib.error

Zaadaptowano ze źródła


Więc zamień to:

import urllib2

Z tym:

import urllib.request as urllib2
Aryan Beezadhur
źródło