Python의 PIL(Pillow)에서 AVIF 포맷이 지원되지 않을 때

Python // 2026년 02월 26일 작성

파이썬에서 종종 사용하는 PIL - 옛날에는 Python Imaging Library의 약자였던 듯하지만 현재는 Pillow가 공식 명칭인 듯 - 패키지는 간단하게 이미지를 편집할 때 요긴하게 쓰인다. 하지만 완벽한 줄 알았던 이 도구에서 어느날 AVIF 이미지를 다루지 못하는 것을 알게 되었다.

문제의 코드는 대충 아래와 같은 식의 코드였다.

from PIL import Image
with Image.open("/foo/bar/someimage.avif") as image:
    pass

특별할 것이 없는 Pillow를 쓴다면 자주 쓰는 '이미지를 읽을 때' 쓰는 코드다. 그런데 이 코드가 실행되니 아래와 같은 메시지를 표시하며 예외(exception)가 발생했다.

UserWarning: image file could not be identified because AVIF support not installed

이 메시지에서 흔히 볼 수 없는 그런 느낌을 받았다. 사용자 경고(UserWarning)라는 형식으로 경고하는 것도 독특하고 메시지의 내용도 지원이 빠졌다는 내용이라 역시 독특하다. 하지만 정작 무슨 일을 하라는 건지는 안 써있기에 좋은 오류 메시지는 아닌 것 같다고 느꼈다.

어쨌든 구현한 기능이 동작하지 않는다는 것이니 반드시 고쳐야만 할 거다.

문제 해결하기

생각보다 문제의 해결은 간단했다. 그저 AVIF를 지원하는 Pillow Plugin 패키지를 추가로 설치하면 된다. 개인적으로는 탐색 중 다음 두 가지 패키지를 발견했다.

근데 heif 라는 이름이 등장하는 것에 좀 어색함을 느끼는 사람도 있을 수 있다. 참고로 AVIF가 HEIF에서 파생된 포맷이라는 점을 알면 그 어색함이 좀 사라질 수는 있을 것 같다.

어쨌거나 개인적으론 여기서 직관적인 이름의 pillow-avif-plugin을 선택했다. 그래서 이 패키지를 프로젝트 의존성에 추가했다.

# pip
pip install pillow-avif-plugin

# poetry
poetry add pillow-avif-plugin

이후 원래의 코드를 돌려보면 되...

...

왜 안 되니?

왜 똑같은 오류가?

아마도 이 문제가 없었다면 이 글이 탄생하지도 않았을 것 같다.

문제 더 해결하기

한참을 삽질하다 겨우 해결법을 찾긴 했다. 아마도 패키지 버전을 맞추어야 정상 동작하는 모양이다. 즉 Pillow Plugin에서 요구하는 Pillow 버전이 어느 정도 정해져 있는 것이 아닌가 유추된다.

그래서 버전을 어떻게 맞출까 고민하다 현재 상황에선 딱히 버전에 구애받는 코드가 없기 때문에 그냥 pillowpillow-avif-plugin 모두 최신 버전으로 올려봤다.

# pip
pip install --upgrade pillow pillow-avif-plugin

# poetry
poetry update pillow pillow-avif-plugin

이렇게 최신 버전으로 둘 다 설치하고 다시 시험해 보니 문제가 싸악 사라지고 원하는 대로 동작하였다.

즉 문제가 해결되었다. 명확하진 않지만 어쨌든 돌아가니 장땡이다.

여담

아무래도 AVIF는 등장한지 얼마 안 된 이미지 포맷이기 때문에 Pillow의 기본 지원에선 아직 빠져있는 상태인 듯하다. 최신 Emacs에서도 AVIF 지원이 빠져있고 말이다. 하지만 2019년에 등장했다는 점에서 그렇게 어린 포맷은 아닌 것 같은데 왜 이렇게들 보수적일까?

그래도 AVIF는 메이저 벤더들이 개발에 참여하고 있는 터라 미래가 굉장히 밝은 포맷일 것은 확실한 듯하다. 무엇보다 AVIF가 많은 벤치마크에서 용량 대비 압축 효율이 높은 이미지 포맷으로 알려지고 있기도 하고 말이다. 그리고 압축 시간도 오래 걸린다는....

참고로 계속해서 AVIF와 관련된 글을 쓰고 있는데 이에 관한 모종의 작업을 했다가 트러블슈팅이 잔뜩 생겼고 이 내용들을 글로 옮기고 있어서 그렇다. 이제는 주제가 다 떨어진 것 같지만 어쩌면 또 관련된 글이 나올 지도 모르니 미리 대비(?)하면 될 것 같다.

Seorenn Logo
Seorenn (Konrad Seo)
개발자 주제에 경제나 먹거리 관련 글을 주로 쓰는 사람