TGViewer
Python Заметки Python Заметки @pythonotes · 2.2K subscribers
Post #216 2.52K
Ранее я показал как упаковать ваше Python-приложение в ZIPAPP.
В дополнение к этой теме покажу ещё один способ как достать изображение из архива, не сохраняя его на диск и сразу перегнать в класс PIL.Image для дальнейших манипуляций.

Что есть ресурс в данном контексте? Это любой объект который можно прочитать как файл.

В Python 3.7 появился новый стандартный способ работы с ресурсами внутри пакетов. Это модуль importlib.resources.
Его следует использовать и для случаев с контейнерами (ZIP, EGG) и для обычных пакетов.

Для начала импортнём нужные модули

from importlib.resources import read_binary
from PIL import Image
import io

Читаем файл ресурса из пакета

data = read_binary("package_name", "image.jpg")

Создаём класс Image

img = Image.open(io.BytesIO(data))

Картинка загружена в память, можно с ней что-то делать

img.thumbnail((200, 200))

И после изменений сохранить в файл

img.save(path, 'JPG')

или использовать еще как-то

img.show()

Модуль получил бекпорт для старых версий в виде стороннего пакета importlib_resources.

До появления этого модуля использовался модуль pkg_resources, входящий в состав setuptools. Но он теперь неактуален.

#libs
Telegram Python Заметки Вы уже знаете, что можно добавить ZIP архив в PYTHONPATH и использовать его как библиотеку. У Python есть еще одна интересная стандартная библиотека zipapp. Она поможет создать стендалон (или почти стендалон) приложение с помощью ZIP архива. На самом деле…
More from @pythonotes
  1. Sep 21, 2026­ WebAssembly это мощная технология позволяющая загружать практически любое приложение в б…
  2. Aug 17, 2026Не так давно столкнулся с API который в ответе с ошибкой присылал только статус-код. Без п…
  3. Jul 20, 2026У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Соби…
  4. Jul 13, 2026В прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно под…
  5. Jul 6, 2026Модуль pwd может использоваться для считывания информации о пользователях из базы данных п…
  6. Jun 22, 2026Недавно я реализовал Multi Tenancy систему на FastAPI + SQLAlchemy и пересобрал её в небол…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →