просто установите 64-разрядную версию JAVA из http://java.com/en/download/manual.jsp
и удалите старую версию, если будет предложено 64-битное установщик
urllib2.urlopen принимает экземпляр класса Request или url, в то время как urllib.urlopen принимает только url.
Похожее обсуждение произошло и здесь: http://www.velocityreviews.com/forums/t326690-urllib-urllib2-what-is-the-difference.html
Обычно следует использовать urllib2, так как иногда это немного упрощает процесс принятия объектов Запроса, а также вызывает URLException при ошибках протокола. С Google App Engine, однако, вы не можете использовать и его. Вы должны использовать URL Fetch API, который Google предоставляет в своем окружении песочницы Python.
.urllib2 предоставляет некоторую дополнительную функциональность, а именно функция urlopen()
может позволить вам указывать заголовки (обычно в прошлом вам приходилось использовать httplib, что гораздо более многословно). Однако, что более важно, urllib2 предоставляет класс Request
, который позволяет более декларативный подход к выполнению запроса:
r = Request(url='http://www.mysite.com')
r.add_header('User-Agent', 'awesome fetcher')
r.add_data(urllib.urlencode({'foo': 'bar'})
response = urlopen(r)
Обратите внимание, что urlencode()
находится только в urllib, а не в urllib2.
Также существуют обработчики для реализации более продвинутой поддержки URL в urllib2. Короткий ответ: если вы не работаете с унаследованным кодом, вы, вероятно, захотите использовать открыватель URL из urllib2, но вам все равно нужно импортировать в urllib некоторые функции утилиты.
Бонусный ответ С Google App Engine, вы можете использовать любой из httplib, urllib или urllib2, но все они являются просто обертками для Google URL Fetch API. То есть, вы все еще подвержены тем же ограничениям, таким как порты, протоколы и длина разрешенного ответа. Тем не менее, вы можете использовать ядро библиотек так, как вы ожидаете для получения HTTP URL.
Мне нравится функция urllib.urlencode
, но ее нет в urllib2
.
>>> urllib.urlencode({'abc':'d f', 'def': '-!2'})
'abc=d+f&def=-%212'