2025, Nov 23 15:02
Падение tkinter при запуске через uv из‑за xcb/X11: как починить
Минимальный скрипт на tkinter падает через uv с xcb/X11 assert. Это баг uv, не вашего GUI. Обновите uv, переустановите Python uv и удалите .venv. Проблема уйдет.
Запуск небольшого окна tkinter через uv может внезапно упасть с низкоуровневым ассертом X11/xcb, хотя сам скрипт элементарный и не использует потоки. Если это похоже на ваш случай, вероятнее всего вы столкнулись с недавно исправленной ошибкой в uv, а не с проблемой в вашем GUI‑коде.
Минимальный скрипт, который воспроизводит падение
# файл: xxx.py
import tkinter as tk
def start_app():
ui = tk.Tk()
caption = tk.Label(ui, text="This line triggers the issue")
caption.pack()
ui.mainloop()
if __name__ == "__main__":
start_app()
Что происходит при запуске через uv
Запуск файла через uv приводит к жёсткому аварийному завершению с диагностикой xcb:
uv run xxx.py
Using CPython 3.13.6
Creating virtual environment at: .venv
[xcb] Unknown sequence number while appending request
[xcb] You called XInitThreads, this is not your fault
[xcb] Aborting, sorry about that.
python: xcb_io.c:157: append_pending_request: Assertion `!xcb_xlib_unknown_seq_number' failed.
Скрипт не использует потоки, но это не играет роли — ошибка возникает ещё до того, как интерфейс tkinter успевает сделать что‑то существенное.
В чём на самом деле дело
Сбой связан с ошибкой в uv, уже исправленной в исходном проекте. Если на вашей системе всё ещё стоит проблемная сборка, uv run может развернуть окружение, которое на старте вызывает xcb‑ассерты. Сам код tkinter ни при чём.
Исправление: обновите uv, переустановите его Python и очистите локальное venv
Решение простое. Обновите uv до последнего релиза, переустановите Python, которым управляет uv, и удалите локальный .venv, чтобы следующий запуск был «с нуля».
uv self update
uv python upgrade --reinstall
rm -rf .venv
После этого просто запустите скрипт снова:
uv run xxx.py
Если хотите запускать с конкретной версией интерпретатора, это тоже работает:
uv run -p 3.13.6 xxx.py
Почему это важно
Такие падения тулкита легко принять за баги приложения. На деле стабильность вашего GUI‑кода часто зависит от состояния инструментов, которые его разворачивают и запускают. Актуальная версия uv и периодическое «обнуление» окружений, когда что‑то идёт не так, способны сберечь часы бесплодной отладки внутри tkinter или стека X11.
Также полезно помнить о текущей работе над совместимостью. По состоянию на 25 сентября 2025 года есть известные открытые проблемы между uv и tkinter; подробности доступны здесь: github.com/astral-sh/uv/issues/15668.
Итоги
Если минимальная программа на tkinter падает только при запуске через uv, в первую очередь подозревайте средство запуска. Обновите uv, переустановите управляемый uv Python и очистите .venv проекта, чтобы начать с чистого листа. После исправления окружения тот же минимальный скрипт должен выполняться без каких‑либо правок кода.