libreria python urllib

libreria - urllib.urlencode python 3



Python 2.7.10 error "from urllib.request import urlopen" ningún módulo llamado request (6)

Abrí el código de github desde github . Asumí que era python2.x y obtuve el error anterior cuando intenté ejecutarlo. Desde la lectura que he visto, Python 3 ha depreciado urllib y lo ha reemplazado con varias bibliotecas, incluida urllib.request .

Parece que el código se escribió en Python 3 (una confirmación de alguien que sabe se agradecería). En este momento no quiero pasar a Python 3; no he investigado qué haría con mi código existente.

Pensando que debería haber un módulo de urllib para Python 2 , busqué en Google (usando "descarga de urllib de python2") y no encontré ninguno. (Podría haber estado oculto en las muchas respuestas ya que urllib incluye la funcionalidad de descarga). Busqué en mi directorio Python27/lib y no lo vi allí. ¿Puedo obtener una versión de este módulo que se ejecuta en Python27 ? ¿Dónde y cómo?


En lugar de utilizar urllib.request.urlopen (), elimine la solicitud de python 2.

urllib.urlopen () no tiene que solicitar en python 2.x para lo que intenta hacer. Espero que funcione para ti. Esto se probó utilizando Python 2.7. Recibí el mismo mensaje de error y se resolvió.


Por ahora, parece que podría superar eso agregando un ? después de la URL.


Puedes programar a la defensiva, y hacer tu importación como:

try: from urllib.request import urlopen except ImportError: from urllib2 import urlopen

y luego en el código, solo usa:

data = urlopen(MIRRORS).read(AMOUNT2READ)


Tiene razón, los paquetes urllib y urllib2 se han dividido en los paquetes urllib.request , urllib.parse y urllib.error en Python 3.x. Los últimos paquetes no existen en Python 2.x

De la documentation -

El módulo urllib se ha dividido en partes y se le ha cambiado el nombre en Python 3 a urllib.request, urllib.parse y urllib.error.

De la https://docs.python.org/2/library/urllib2.html -

El módulo urllib2 se ha dividido en varios módulos en Python 3 llamados urllib.request y urllib.error.

Así que estoy bastante seguro de que el código que descargaste se ha escrito para Python 3.x, ya que están utilizando una biblioteca que solo está presente en Python 3.x.

Hay un paquete urllib en python, pero no tiene el subpaquete de solicitud . Además, supongamos que realiza un montón de trabajo y de alguna manera hace que el subpaquete de solicitud esté disponible en Python 2.x.

Existe una probabilidad muy alta de tener más problemas, hay mucha incompatibilidad entre Python 2.xy Python 3.x, al final, es muy probable que termine reescribiendo al menos la mitad del código de github (y la mayoría Probablemente leyendo y entendiendo el código completo desde allí).

Incluso entonces pueden surgir otros errores debido al hecho de que algunos de los detalles de la implementación cambiaron entre Python 2.x y Python 3.x (como ejemplo, la comprensión de lista tiene su propio espacio de nombres en Python 3.x)

Es mejor intentar descargar y usar Python 3, que intentar que el código escrito para Python 3.x sea compatible con Python 2.x


Trate de usar urllib2:

https://docs.python.org/2/library/urllib2.html

Esta línea debería funcionar para reemplazar urlopen:

from urllib2 import urlopen

Probado en Python 2.7 en Macbook Pro

Intenta publicar un enlace al git en cuestión.


from urllib.request import urlopen, Request

Debe resolver todo