a progressive, incrementally-adoptable Python framework
for building web interface in Jupyter Notebook.
installation .
docs .
learn
Vue.py (pronounced /vjuːpaɪ/, like "view py") is a reactive Python framework for building web interface in Jupyter. It is built upon standard HTML, CSS, and Python, offering a declarative and component-based programming model that aids in the efficient development of user interfaces. Vue.py is capable of handling both simple and complex interfaces.
- 🛠️ create custom web interface using pure Python in Jupyter
- 🤖 prototype within .ipynb or .py files
- 🪄 reactive: update the data, vuepy will reactively update all dependent view components
- 🚀 batteries-included: built-in IPywUI includes 37+ commonly used UI components
- 🚀 batteries-included: Panel-vuepy includes 130+ commonly used UI components
- 🧩 extensible: can easily integrate third-party python libraries such as plotly, bokeh, panel, pandas, ipyleaflet etc
- 🖐️ interactive: bind sliders, buttons, plots, and more to Python — no callbacks required
- 🚀 run in Jupyter, JupyterLab, VSCode, Cursor, Google Colab and more
- ✨ generate UI interface with one click through AI-driven conversation interface. provide llms.txt, llms-ctx.txt, llms-ctx-ipywui.md, llm-ctx-panel-vuepy.md
Vue.py is available on PyPI:
pip install vuepy-core
from vuepy import ref, create_app
def setup(*args):
count = ref(0)
def counter():
count.value += 1
return locals()
app = create_app({
'setup': setup,
'template': '''
<Button :label="f'Count is: {count.value}'"
@click='counter()'
></Button>
'''
})
app.mount()
Read the documentation to learn more.
vuepy is easy to get started with, with lots of room for powers users.
Check out our docs, the examples/
folder, and our gallery to learn more.
Desc | Link | |
---|---|---|
![]() |
Reactivity | Read more |
![]() |
Interacting with plotly | Read more |
![]() |
Run in VSCode | Read more |
![]() |
Building vuepy app with LLMs | Read more |
![]() |
vleaflet interactive maps demo | Read more, docs |
Having trouble? Get help in our Discord or open a Discussion.
New contributors welcome!