Como leio dados de imagem de um URL em Python?

| | | | | | |

O que estou tentando fazer é bastante simples quando estamos lidando com um arquivo local, mas o problema surge quando tento fazer isso com um URL remoto.

Basicamente, estou tentando criar um objeto de imagem PIL a partir de um arquivo extraído de um URL. Claro, eu sempre poderia buscar o URL e armazená-lo em um arquivo temporário e abri-lo em um objeto de imagem, mas isso parece muito ineficiente.

Aqui está o que eu tenho:

Image.open(urlopen(url)) 

Ele fica reclamando que seek( ) não está disponível, então tentei isso:

Image.open(urlopen(url).read()) 

Mas isso também não funcionou. Existe uma maneira melhor de fazer isso ou gravar em um arquivo temporário é a maneira aceita de fazer esse tipo de coisa?