1. 問題描述
如題,Python代碼報錯,其完整錯誤信息如下:
from scipy.misc import imresize
ImportError: cannot import name 'imresize'
在某些情形下,可以通過安裝Pillow(命令:pip install pillow
)來解決,然而自己的環境中已經安裝了Pillow卻還是報上述錯誤,那麼應該是別的原因引起的。
2. 原因分析
通過查找資料得知,imresize已經被最新版本的SciPy庫所棄用,而自己報錯的Python環境的SciPy庫版本爲1.3.0,這也正是出現上述問題的原因。
imresize is deprecated! imresize is deprecated in SciPy 1.0.0, and will be removed in 1.3.0.
---- from https://docs.scipy.org/doc/scipy-1.2.0/reference/generated/scipy.misc.imresize.html
3. 解決方法
換一種寫法,通過numpy來實現,import語句如下所示(當然,仍然需要依賴Pillow庫,可以用語句pip install pillow
進行安裝):
from PIL import Image
import numpy as np
imresize使用示例(被註釋的第一行是基於scipy庫的寫法,第二行是基於numpy的寫法):
# im = imresize(im, (h, int(w * aspect_ratio)), interp='bicubic')
im = np.array(Image.fromarray(im).resize((h, int(w * aspect_ratio))))
參考資料:
- https://docs.scipy.org/doc/scipy-1.2.0/reference/generated/scipy.misc.imresize.html
- https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/issues/652