"Неизвестное расширение" в функции сохранения PIL из-за пустого массива EXTENSION - программирование

"Неизвестное расширение" в функции сохранения PIL из-за пустого массива EXTENSION

Я новичок в python и имею проблему с функцией save вилки Pillow PIL.

В этом минимальном примере

import Image

im = Image.new("RGB", (200, 30), "#ddd")
im.save("image.png")

Я получаю следующую ошибку:

File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 1667, in save
  raise KeyError(ext)  # unknown extension
KeyError: '.png'

Соответствующие строки в функции save

preinit()

[...]

try:
  format = EXTENSION[ext]
except KeyError:
  raise KeyError(ext)  # unknown extension

Я посмотрел массив EXTENSION и обнаружил, что он пуст, хотя он должен быть инициализирован в preinit(), например, from PIL import PngImagePlugin. PngImagePlugin.py вызывает Image.register_extension("PNG", ".png"). Наблюдая за массивом внутри этой функции или внутри PngImagePlugin, она действительно заполняется расширениями файлов.

Полагая print(EXTENSION) прямо перед тем, как try-except-block показывает пустой массив EXTENSION.

(Такая же проблема с массивом save содержит несколько строк в функции save.)

Любая помощь приветствуется.

EDIT: Недавно я обновился от OpenSuse 13.1. до 13.2. Он отлично работал в 13.1, но не в 13.2.

4b9b3361

Ответ 1

Вам нужно написать это вместо:

from PIL import Image # Notice the 'from PIL' at the start of the line

im = Image.new("RGB", (200, 30), "#ddd")
im.save("image.png")