[xcb] Unknown sequence number while appending request
[xcb] You called XInitThreads, this is not your fault
[xcb] Aborting, sorry about that.
python: ../../src/xcb_io.c:157: append_pending_request: Assertion `!xcb_xlib_unknown_seq_number' failed.
Aborted (core dumped)아래 깃허브 관련 이슈로 등록되고 OPEN 상태임
https://github.com/astral-sh/python-build-standalone/issues/146
github.com
(현재는 조치됨)
일반 Python 환경에서는 정상 실행되지만, uv가 관리하는 Python 환경에서는 GUI 창이 뜨지 않고 오류가 발생하는 경우입니다.
원인 요약
이 문제는 uv 자체의 문제라기보다는, uv가 사용하는 python-build-standalone 기반 Python 배포판과 WSL의 GUI/X11 환경이 맞물리면서 발생했던 문제에 가깝습니다.
특히 Tkinter는 내부적으로 Tcl/Tk와 X11 관련 라이브러리를 사용합니다. 과거 python-build-standalone의 Tcl/Tk 빌드 방식 때문에 WSL 또는 Linux GUI 환경에서 xcb 관련 오류가 발생할 수 있었습니다.
관련 이슈:
현재는 관련 수정이 반영되어, 최신 uv와 최신 uv-managed Python을 사용하면 Tkinter 문제는 대부분 해결된 상태입니다.
먼저 확인할 것: WSL GUI가 정상인지 점검
uv 문제로 보기 전에 WSL에서 GUI 앱 실행이 가능한지 먼저 확인해야 합니다.
echo $DISPLAY
echo $WAYLAND_DISPLAY
echo $XDG_RUNTIME_DIRGUI 테스트용 패키지를 설치합니다.
sudo apt update
sudo apt install -y x11-apps테스트 실행:
xeyesxeyes 창이 뜬다면 WSLg GUI 환경은 정상입니다.
창이 뜨지 않는다면 uv가 아니라 WSLg, Windows 버전, 그래픽 드라이버, DISPLAY 설정 문제를 먼저 확인해야 합니다.
해결 방법 1: uv와 uv-managed Python 재설치
가장 먼저 권장하는 방법입니다.
uv self update
uv python list --only-installed
uv python install --reinstall 3.13기존 가상환경을 삭제하고 다시 생성합니다.
rm -rf .venv
uv venv --python 3.13Tkinter 테스트:
uv run python - <<'PY'
import tkinter as tk
root = tk.Tk()
root.title("uv + tkinter test")
label = tk.Label(root, text="Hello, Tkinter on WSL + uv")
label.pack(padx=30, pady=30)
root.mainloop()
PY정상이라면 작은 Tkinter 창이 표시됩니다.
해결 방법 2: 시스템 Python을 uv에서 사용하기
최신 uv-managed Python에서도 문제가 남아 있다면, WSL 배포판의 시스템 Python을 사용하는 방법이 안정적입니다.
sudo apt update
sudo apt install -y python3 python3-venv python3-tk시스템 Python으로 uv 가상환경을 생성합니다.
rm -rf .venv
uv venv --python /usr/bin/python3 --no-managed-python실행:
uv run --no-managed-python python myapp.py이 방식은 패키지 관리는 uv로 하되, Python 인터프리터는 Ubuntu/Debian의 시스템 Python을 사용하는 방식입니다.
Tkinter처럼 OS GUI 라이브러리와 밀접하게 연결된 경우에는 이 방법이 가장 안정적일 수 있습니다.
해결 방법 3: PyQt/PySide는 xcb 의존성 설치 필요
PyQt나 PySide에서 발생하는 xcb 오류는 Tkinter 문제와 별개일 수 있습니다.
Qt는 Linux에서 GUI를 실행할 때 xcb 플랫폼 플러그인을 사용하기 때문에 관련 라이브러리가 필요합니다.
Ubuntu/Debian WSL에서는 다음 패키지를 설치합니다.
sudo apt update
sudo apt install -y \
libxcb-cursor0 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-render-util0 \
libxcb-xinerama0 \
libxcb-xkb1 \
libxkbcommon-x11-0 \
libgl1 \
libegl1 \
libdbus-1-3PyQt6 테스트:
uv init pyqt-test
cd pyqt-test
uv python pin 3.13
uv add PyQt6
uv run python - <<'PY'
import sys
from PyQt6.QtWidgets import QApplication, QLabel
app = QApplication(sys.argv)
label = QLabel("Hello, PyQt6 on WSL + uv")
label.resize(300, 100)
label.show()
sys.exit(app.exec())
PY오류가 계속된다면 Qt 플러그인 로딩 로그를 확인합니다.
QT_DEBUG_PLUGINS=1 uv run python app.py필요에 따라 Qt 플랫폼을 명시할 수도 있습니다.
QT_QPA_PLATFORM=xcb uv run python app.py또는 WSLg Wayland 환경에서는 다음도 시도할 수 있습니다.
QT_QPA_PLATFORM=wayland uv run python app.py
0 댓글