纯Python、React风格的框架,用于扩展您的Jupyter和Web应用
欢迎加入我们的Discord聊天,提问或分享您的想法和创作!
Solara简介
虽然有许多Python Web框架,但大多数都是为小型数据应用设计的,或使用未经大规模验证的范式。随着应用复杂度增加,代码组织、可重用性和状态管理往往会变得困难,导致要么产生混乱的代码,要么不得不转向React应用。
Solara旨在解决这一问题。通过使用类似React的API,我们无需担心可扩展性。React已经证明了其支持世界上最大Web应用的能力。
Solara使用纯Python实现的React(Reacton)来创建基于ipywidget的应用。这些应用既可以在Jupyter Notebook中运行,也可以作为独立的Web应用与FastAPI等框架配合使用。这种范式实现了基于组件的代码和极其简单的状态管理。
通过构建在ipywidgets之上,我们自动利用了现有的widget生态系统,并可以在多个平台上运行,包括JupyterLab、Jupyter Notebook、Voilà、Google Colab、DataBricks、JetBrains Datalore等。
我们注重开发者体验。Solara将为您提供热代码重载和类型提示,加快开发速度。
安装
运行:
pip install solara
或查看安装说明获取更详细的指导。
第一个脚本
将以下Python代码片段放入文件中(建议命名为sol.py
),或放入Jupyter notebook单元格中:
import solara
# 在顶层声明响应式变量。使用这些变量的组件将在其值变化时重新执行。
sentence = solara.reactive("Solara让我们的团队更高效。")
word_limit = solara.reactive(10)
@solara.component
def Page():
# 在组件内计算word_count,确保在响应式变量变化时重新执行。
word_count = len(sentence.value.split())
solara.SliderInt("字数限制", value=word_limit, min=2, max=20)
solara.InputText(label="您的句子", value=sentence, continuous_update=True)
# 根据当前字数和字数限制显示消息。
if word_count >= int(word_limit.value):
solara.Error(f"当前{word_count}个字,已超过{word_limit.value}个字的限制。")
elif word_count >= int(0.8 * word_limit.value):
solara.Warning(f"当前{word_count}个字,接近{word_limit.value}个字的限制。")
else:
solara.Success("很棒的简短表述!")
# 以下行仅在Jupyter notebook中运行代码时需要:
Page()
在放置文件(sol.py
)的同一目录下从命令行运行:
$ solara run sol.py
Solara服务器正在启动,地址为 http://localhost:8765
或将代码复制粘贴到Jupyter notebook单元格中并执行(最后的Page()
表达式将自动在notebook中渲染组件)。
在https://solara.dev/documentation/getting_started 查看此代码片段的在线运行效果
演示
以下演示应用可用于探索数据集(内置或自行上传)并使用散点图。可以与图表交互以过滤数据集,并可下载过滤后的数据集。
在solara-server中运行
solara服务器基于Starlette/FastAPI构建,可独立运行。适合生产环境使用。
在Jupyter中运行
通过构建在ipywidgets之上,我们自动利用了现有的widget生态系统,并可以在多个平台上运行,包括JupyterLab、Jupyter Notebook、Voilà、Google Colab、DataBricks、JetBrains Datalore等。这意味着我们的应用也可以在Jupyter中运行:
资源
访问我们的主网站或直接跳转到介绍
请注意,solara.dev网站是使用Solara创建的