A03ki / uecbbs

@uec_bbsを支えるPythonパッケージTwissifyの管理
https://twitter.com/uec_bbs
MIT License
0 stars 0 forks source link

`load_image_url`において`import PIL`から`PIL.Image`はできない #7

Closed A03ki closed 4 years ago

A03ki commented 4 years ago

load_image_urlを使うとAttributeErrorが発生する。

from twissify.image import load_image_url

load_image_url("https://github.blog/wp-content/uploads/2020/03/"
               "blog_sensitive-topics_high-contrast-2.png?w=1200")

出力:

AttributeError: module 'PIL' has no attribute 'Image'

エラーが出た理由は下の回答から理解した。

PIL's init.py is just an empty stub as is common. It won't magically import anything by itself. import - Python PIL has no attribute 'Image' - Stack Overflow


なぜ気付けなかったのか

元々はfrom PIL import Imageを使っていたが、途中からimport PILに変更した。ほかのpyファイルから呼ばれるときに変更前と同様の動作だったためPIL.Imageが使えると判断した。
テスト関数を作成していれば気付けた問題であった。

なぜ変更前と同様の動作だったのか

import tensorflowをするとPIL.Imageで呼ぶことができる。

import tensorflow
from twissify.image import load_image_url

load_image_url("https://github.blog/wp-content/uploads/2020/03/"
               "blog_sensitive-topics_high-contrast-2.png?w=1200")

出力:

(<PIL.PngImagePlugin.PngImageFile image mode=RGB size=1200x630 at 0x134BDEC10>,
 200)