Необходимо установить urllib2 для Python 3.5.1

102

Я использую Python 3.5.1 для Mac. Я хочу использовать urllib2модуль. Я попытался установить его, но мне сказали, что он разделен на Python 3 urllib.requestи urllib.errorдля него.

Моя команда (сейчас выполняется из каталога bin фреймворка, потому что она не на моем пути):

sudo ./pip3 install urllib.request

Возвращает это:

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

У меня была такая же ошибка раньше, когда я пытался установить urllib2одним махом.

Имонн Гормли
источник
2
Разве вы не можете просто импортировать urllib.requestсвою программу Python?
michaelpri
3
urllib.request является частью стандартной библиотеки и не требует установки.
Дэниел Роузман
дубликат stackoverflow.com/questions/16597865/…
user2673238
urllib является частью библиотеки std, но в ней содержится только пакет синтаксического анализа, я не смог найти в нем запрос ....
Девендра Бхат

Ответы:

171

ПРЕДУПРЕЖДЕНИЕ . Исследования безопасности обнаружили несколько зараженных пакетов в PyPI , включая пакет с именемurllib, который при установке «позвонит домой». Если вы использовали pip install urllibнекоторое время после июня 2017 года, удалите этот пакет как можно скорее .

Вы не можете, да и не нужно.

urllib2- это имя библиотеки, включенной в Python 2. Вместо этого вы можете использовать urllib.requestбиблиотеку, включенную в Python 3. urllib.requestБиблиотека работает точно так же urllib2работает в Python 2. Поскольку он уже включен вам не нужно , чтобы установить его.

Если вы следуете руководству, в котором вам предлагается использовать, urllib2вы обнаружите, что столкнетесь с другими проблемами. Ваш учебник был написан для Python 2, а не для Python 3. Найдите другой учебник или установите Python 2.7 и продолжайте обучение на этой версии. Вы обнаружите, что urllib2идет с этой версией.

В качестве альтернативы установите requestsбиблиотеку для более высокого уровня и более простого в использовании API. Он будет работать как на Python 2, так и на 3.

Мартейн Питерс
источник
24
Спасибо, тогда я мог бы использовать:import urllib.request as urllib2
MewX
так что pip не модерируется против вредоносных программ?
игорь
3
@igor: pipэто инструмент командной строки, который может обнаруживать и загружать пакеты из любого места. PyPI.org, куда pipбудет идти индекс пакета по умолчанию , не модерируется. Python Software Foundation - это организация, управляемая добровольцами, и она даже не может начать модерировать объем используемого кода.
Мартин Питерс
Спасибо за внимание
Би Фуртадо
28

Согласно документам :

Примечание. Модуль urllib2 разделен на несколько модулей в Python 3 с именами urllib.requestи urllib.error. Инструмент 2to3 автоматически адаптирует импорт при преобразовании ваших источников в Python 3.

Таким образом, похоже, что невозможно делать то, что вы хотите, но вы можете использовать соответствующие функции python3 из urllib.request.

Илья Васильевич Щуров
источник
6

В Python 3 urllib2был заменен двумя встроенными модулями с именами urllib.requestиurllib.error

Адаптировано из исходников


Так что замените это:

import urllib2

С этим:

import urllib.request as urllib2
Ариан Бизадур
источник