yeznable
[ 트러블슈팅 ] Windows + uv + PyGWalker + Streamlit 본문

지난번에 했던 포스팅에서 Jupyter Lab에 PyGWalker를 띄워 분석을 하려고 할 때 생긴 문제들을 정리했다.
이번에는 Streamlit에서 이 화면을 띄워보려고 했던 삽질과 해결법을 정리 해둔다.
사전 설치
uv와 아마도 Visual Studio Build Tools가 필요할 것 같은데 Jupyter Lab 때와 동일하게 하면 된다.
[ 트러블슈팅 ] Windows + uv + PyGWalker + Jupyter Lab
Jupyter Lab에서 이 화면을 띄워보려고 했던 삽질과 해결법을 정리 해둔다.사전 설치1. uv프로젝트 관리를 굳이 uv로 하고싶었기 때문에 uv가 필요하다.# uv 설치 명령어 (윈도우 기준)powershell -c "irm htt
yeznable-blog.tistory.com
또한 PyGWalker는 distutils 패키지를 필요로 해서 Python 3.10 버전으로 프로젝트를 진행해야 하는데 이전 포스팅에 정리한 방법 외에 다른 방법도 이번에는 정리 해둔다.
설치된 파이썬 uv로 확인
다음과 같은 명령어로 간단하게 내 컴퓨터에 설치된 파이썬 버전을 확인할 수 있다.
# 설치된 파이썬 버전 확인
uv python list
# 출력 결과
# cpython-3.14.0a6+freethreaded-windows-x86_64-none <download available>
# cpython-3.14.0a6-windows-x86_64-none <download available>
# cpython-3.13.2+freethreaded-windows-x86_64-none <download available>
# cpython-3.13.2-windows-x86_64-none AppData\Roaming\uv\python\cpython-3.13.2-windows-x86_64-none\python.exe
# cpython-3.12.9-windows-x86_64-none <download available>
# cpython-3.11.11-windows-x86_64-none <download available>
# cpython-3.10.16-windows-x86_64-none <download available>
# cpython-3.10.5-windows-x86_64-none AppData\Local\Programs\Python\Python310\python.exe
# cpython-3.9.21-windows-x86_64-none <download available>
# cpython-3.9.12-windows-x86_64-none C:\ProgramData\Anaconda3\python.exe
# cpython-3.8.20-windows-x86_64-none <download available>
# cpython-3.7.9-windows-x86_64-none <download available>
uv로 파이썬을 설치도 가능하다.
나는 파이썬 3.10 버전이 이미 설치되어 있어서 3.12로 예시를 들었지만 PyGWalker를 사용하기 위해 3.10 버전이 설치되지 않아있다면 다음 방법을 통해 설치할 수 있다.
# 파이썬 설치
uv python install 3.12
# 출력 결과
# Installed Python 3.12.9 in 5.77s
# + cpython-3.12.9-windows-x86_64-none
# 설치된 파이썬 버전 확인
uv python list
# 출력 결과
# cpython-3.14.0a6+freethreaded-windows-x86_64-none <download available>
# cpython-3.14.0a6-windows-x86_64-none <download available>
# cpython-3.13.2+freethreaded-windows-x86_64-none <download available>
# cpython-3.13.2-windows-x86_64-none AppData\Roaming\uv\python\cpython-3.13.2-windows-x86_64-none\python.exe
# cpython-3.12.9-windows-x86_64-none AppData\Roaming\uv\python\cpython-3.12.9-windows-x86_64-none\python.exe
# cpython-3.11.11-windows-x86_64-none <download available>
# cpython-3.10.16-windows-x86_64-none <download available>
# cpython-3.10.5-windows-x86_64-none AppData\Local\Programs\Python\Python310\python.exe
# cpython-3.9.21-windows-x86_64-none <download available>
# cpython-3.9.12-windows-x86_64-none C:\ProgramData\Anaconda3\python.exe
# cpython-3.8.20-windows-x86_64-none <download available>
# cpython-3.7.9-windows-x86_64-none <download available>
uv 프로젝트 준비
# PyGWalker 사용에 문제 없도록 python 3.10 버전으로 준비
uv init --python=3.10
# venv도 python 3.10 버전으로 준비
uv venv --python=3.10
필요 패키지 설치
# PyGWalker와 Streamlit 설치
uv add pygwalker streamlit
Problem Case 1
타이타닉 데이터로 PyGWalker를 띄워서 분석해보기로 하자.
우선 PyGWalker 활용법에 대해 검색 해보면 가장 많이 나오는 방법으로 다음과 같이 코드를 작성 해봤다.
# main.py
import streamlit as st
import pandas as pd
import pygwalker as pyg
st.title("PyGWalker Test in Streamlit")
df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/titanic.csv")
pyg.walk(df)
# Streamlit 실행
uv run streamlit run main.py
실행해보면 다음과 같이 2개의 브라우저 창이 열리면서 하나의 창에는 Title만 작성된 Streamlit 화면, 하나의 창에는 PyGWalker 화면이 띄워진다.


해당 결과는 내가 원하는 결과가 아니었다.
Problem Case 2
알고보니 PyGWalker를 Streamlit에서 사용하려면 pyg.walk 기능을 쓰면 안된다.
내가 ChatGPT한테 물어봤을 때는 계속 pygwalker.streamlit을 import 해서 쓰라고 하는데 그런 모듈은 없다.
다음과 같이 pygwalker.api.streamlit에서 import 해서 써야 한다.
import streamlit as st
import pandas as pd
from pygwalker.api.streamlit import StreamlitRenderer, init_streamlit_comm
st.set_page_config(layout="wide")
st.title("PyGWalker Test in Streamlit")
init_streamlit_comm()
df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/titanic.csv")
renderer = StreamlitRenderer(
dataset=df,
use_kernel_calc=True,
)
renderer.explorer(key="main_viz")
이렇게 하면 한 화면에서 Streamlit과 PyGWalker를 함께 사용할 수 있지만 현재는 다음과 같은 알림이 뜬다.

이 문제가 있는 버전은 다음과 같다.
이후로 나오는 버전에서는 파이썬 3.10 이상도 지원하고 이런 문제도 해결될지 모르겠다.
# 패키지 버전 확인
uv pip show pygwalker streamlit
# 출력 결과
# PyGWalker 0.4.9.15 버전
# Streamlit 1.45.0 버전
Name: pygwalker
Version: 0.4.9.15
Location: D:\OLAP\.venv\Lib\site-packages
Requires: anywidget, appdirs, arrow, astor, cachetools, duckdb, gw-dsl-parser, ipylab, ipython, ipywidgets, jinja2, kanaries-track, numpy, packaging, pandas, psutil, pyarrow, pydantic, pytz, quickjs, requests, segment-analytics-python, sqlalchemy, sqlglot, traitlets, typing-extensions
Required-by:
---
Name: streamlit
Version: 1.45.0
Location: D:\OLAP\.venv\Lib\site-packages
Requires: altair, blinker, cachetools, click, gitpython, numpy, packaging, pandas, pillow, protobuf, pyarrow, pydeck, requests, tenacity, toml, tornado, typing-extensions, watchdog
Required-by:
st.set_option으로 streamlit 경고를 무시할 수 있는데 해당 설정 라인의 위치가 중요했다.
Problem Case 3
원하는 화면이 나와서 이제 됐다고 생각했었는데 막상 PyGWalker로 데이터를 다루려고 하면 다음과 같이 Running 상태로 화면이 먹통이 된다.
화면을 새로고침 하거나 다시 접속 하려고 해도 되지 않는 상황이 발생한다.

Streamlit에서 흔하게 있는 rerun의 문제였다.
session_state를 활용해서 이 문제를 해결할 수 있었다.
이때 StreamlitRenderer 또한 session_state에 넣어줘야 한다.
최종 코드
위의 세가지 문제를 해결한 최종 코드는 다음과 같다.
import streamlit as st
import pandas as pd
from pygwalker.api.streamlit import StreamlitRenderer, init_streamlit_comm
st.set_page_config(layout="wide")
st.set_option('client.showErrorDetails', False)
init_streamlit_comm()
st.title("PyGWalker Test in Streamlit")
# 세션 상태 초기화
if "df" not in st.session_state:
try:
df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/titanic.csv")
st.session_state["df"] = df
st.session_state["renderer"] = StreamlitRenderer(dataset=df, use_kernel_calc=True)
except Exception as e:
st.session_state["df"] = None
st.session_state["renderer"] = None
st.error(f"데이터 로딩 실패: {e}")
# PyGWalker 시각화 출력
if st.session_state["renderer"]:
st.session_state["renderer"].explorer(key="main_viz")
else:
st.info("데이터를 불러올 수 없습니다.")
'하는 일 > 데이터엔지니어링' 카테고리의 다른 글
| [ Airflow ] Linux + Airflow 로그 삭제 (0) | 2025.05.13 |
|---|---|
| [ 따라잡기 ] Modern Data Stack 상위 랭킹 정리 (0) | 2025.05.13 |
| [ 트러블슈팅 ] Windows + uv + PyGWalker + Jupyter Lab (0) | 2025.05.01 |
| [ uv ] 파이썬 프로젝트를 위한 uv 활용 경험 정리 (0) | 2025.05.01 |
| [ 프로젝트 ] ChatGPT랑 LOG CREATER 만들어보기 (1) (0) | 2025.04.26 |