Streamlit搭建简易网页,你试过吗?

Streamlit搭建简易网页,你试过吗?,第1张

最近的服务器不很稳定,偶尔不写诗词,也写一篇技术贴。虽然跟没关系介绍一下。

一直用apache在centos上搭建服务器。去年centos公布要退出市场,原来centos8的预计的维护期,居然提前终止,而且比旧版本的centos7还要早。幸好我只更新了一台centos8。不过深刻地感到了redhat资本的力量。

刚刚从yum适应为dns,就被迫中止。那么今后,真的要选Ubuntu了吗?

我主要用R shiny搭建统计系统。一个服务器里装了shiny,rstudio。去年slack满了,自己搭建了mattermost,另外和一个心理学的老师合作,想搞高深的iat(潜在态度测定),又搭建了oTree。然后port的转送,proxy设定,就一顿头疼。

说好了,不再尝试新的东西。结果今年心血来潮,看到Python的streamlit又忍不住测试了一下。

install
Python,pip版本过低的话装不上,需要更新。我用的python36

Streamlit的设定file

HELLO WORLD

Run

Default port是8501,如果开口只有80还和其他service共用的话,可以用proxy rewrite一下。

(如果设定ssl的话,可以搞到port443上。)

或者在浏览器里 >

痛点

从我开始折腾数据分析工具的那一天,就没有想明白一件事儿 —— 我打算把数据分析的成果做成一个 Web 应用,为什么这么难?

我需要的核心功能,无非是在网页上接收用户输入,然后做分析处理,把分析结果反馈给用户,完事儿。

可是这谈何容易?

很多人都会微笑着告诉你,想做 Web 应用?这得学前端编程, HTML + Javascript 了解一下吧!

什么?你还需要在后台做数据分析?那你就得学 Web 框架了。

你说喜欢 Python ?那就学个 Django 或者 Flask 好了。

我也不是没有看过 Django 和 Flask 的教程,还曾经付费学习过。光是 Django 配置环境,就够写一章出来。

作为学习的中间成果,我还写了这篇《如何用 Python 做 Web 开发?——Django 环境配置》分享给你

真正让我痛苦的,不是 Web 框架的 *** 作有多么琐碎,而是教程里的案例,为什么都那么奇怪?

几乎所有的教程,都指向一个目标:

来,我教你做一个 blog 出来!

我用你教?!

我要是想用 blog ,可以直接注册一个免费的啊!为什么我要自己开发个 blog 出来?

为什么你就不能告诉我,该怎么把我目前的数据分析结果,迅速挪到 Web 页面上,跟用户实时交互?

虽然二者的结果,都是做一个 Web 应用出来。但是,它们关注的焦点,需要的功能,能一样吗?

但是人家写书和做教程的人,就是不疾不徐,坚持一定要教会你,如何做一个 blog 出来……

你不学,又能怎么办呢?你难道想只凭 Python 脚本,就做一个 Web 应用出来?

还真别说,最近,这个事儿从幻想,变成了现实

样例

这不,我就用纯 Python 脚本写了个 Web 应用。

我编写的代码里,没有一丝半毫的 Web 框架,Javascript,甚至是 HTML 。

这玩意儿能用吗?

你自己来试试看。

请你打开浏览器,输入以下链接:>

你会看到下面的初始化界面。

初始化完毕之后,页面会分成左右两栏。左面是两个下拉候选框,分别让你指定需要分析的数据范围。

上面一个,是事件类型;

下面一个,是事件发生归属地。

如果你看过我的文章《如何用 Python 和循环神经网络预测严重交通拥堵?》,应该对这个数据集很熟悉。

只不过,当时我们更注重的,是用循环神经网络搭建了一个严重拥堵事件预测模型。

而今天,我们是要进行探索性数据分析,也就是根据我们感兴趣的目标,对数据进行整理 *** 作,然后可视化显示。

选定之后,你会看到右侧提示两个信息:

你筛选之后,数据框包含行数

在层叠地图上的可视化结果。

怎么样?

麻雀虽小,五脏俱全。

虽然咱们这个 Web 应用很简单,不过交互分析该有的功能和流程,基本上都涵盖了。

你可能会问:

王老师,编这么一个应用出来,不简单吧?

让我带你到幕后,看看是不是很复杂。


幕后

我把这个应用的全部源代码,都为你存储到了 Github 上。请你访问这个网址获取:>

可以看到,一共包含了 4 个文件。

有意思的是,其中 3 个,包括:

Procfile

setupsh

requirementstxt

都只是部署到远程服务器时,需要用到的配置文件而已。

也就是说,只有最后一个 helloworldpy 是主角,它包含了实现咱们全部交互式数据分析功能的 Python 脚本文件。

这代码,少说也得有几百行吧?

别担心,打开来看看:

上面这张截图,就已经包含了实现交互数据分析功能的全部代码。

神奇吧?


解读

这么短的代码,为什么能有如此强大的功能?

这是因为它背后使用的一个软件包,叫做 streamlit 。

它是干什么用的?

一言以蔽之,给你赋能,让你能够不去 *** 心什么前端后端。只写 Python ,只关注功能,你就能写出一个交互式 Web 应用出来。

当然,既然最后是 Web 应用,那么实际上前后端的功能都是齐备的。

只不过,这些交由 Streamlit 来帮你费心 *** 办。你根本不用管。


爆发

为什么会有人做了这么一款神器出来?

原因很简单,咱们前面提到的痛点,是大伙儿都有的。

咱们这些麻瓜(Muggle),遇到痛点只能忍着。

但是真正的魔法师(优秀程序员),是忍不了的。

在这段来自 PyData LA 2019 的视频里,Streamlit 的 CEO Adrien Treuille 谈及了他在数据智能企业中,长期遭遇的痛点。

最大的痛点,就是数据科学家训练好机器学习模型后,需要验证效果,和用户反馈沟通。

但是,做机器学习的工程师本身,并不掌握这一整套的工具栈。

所以,就得在把全部的数据分析和模型训练工作完成后,把这东西移交给一个工具制作团队

人家做完以后,就告诉数据科学团队说,做好了。但是注意,现在处于需求冻结阶段。这个应用你们可以随便用,只是别乱改。改坏了我们管不了。因为最近两个月,我们还得给其他若干数据分析团队做 app 。大概几个月以后,我们又能回来帮助你们了……

Adrien Treuille 很敏锐地捕捉到了这个长期痛点,于是在 2018 年, 创立了 streamlit 。

目标很简单,给数据科学团队提供简单的工具,让他们使用已经掌握的 Python 编程技能,就能直接做 Web 应用。

什么 “等上两三个月不许改”?!你们自己慢慢儿玩儿去吧,我们想怎么改,就怎么改!

至于做出来的东西嘛,可以是这样的:


资源

看到这里,是不是心动了?也打算学习一下 Streamlit ?

没问题,我前面给你提供的样例,就在 github 上,你可以直接查看源码。

如果你希望重现这个小应用,并且一步步学习掌握 Streamlit 的基础知识和技能,我也已经为你写好了一份手把手的教程。地址在这里>

它不仅教你如何设置环境,安装工具,写作代码,甚至连如何免费部署到 heroku 平台,让用户使用,都毫无保留地教给了你。

那篇文章,我用于参加少数派年度征文活动,所以就不能全文展示在这里了。

读完以后,如果你觉得有收获,欢迎在少数派平台上帮我点个赞。谢谢支持!


思考

尝试过之后,你应该不难发现,Streamlit 给你带来了什么。

如果你学过 Javascript 和 Flask, Django 等 Web 应用开发技术,Streamlit 可以加快你的 Web 应用开发与测试进程。

如果你还没有学过上述技术, Streamlit 可以给你赋能,让你一下子有了把数据分析结果变成产品的能力。

给你讲点儿更激进的。

有人已经希望能用它替代掉 Flask 用于产品发布了。

还有人说,将来写技术文档,也应该充分使用 Streamlit 。

甚至,还把它比作了数据科学界的 iPhone 。

这里,它是借喻 iPhone 开启智能手机时代,说明 Streamlit 的划时代性

不希望你也变得如此激进。

因为这里提到的每一种功用,现在还都有非常专业的工具做的更好,而且新的工具也在不断涌现。

例如说,我们在多个教程中一直使用 Jupyter Notebook 。

现在凭借 Voila 扩展的加持,你也可以很轻松地把 Jupyter Notebook 变成 Web app ,而且可以免费运行在 mybinder 上面。

但是,你可以看到,一个新的工具,以一种简单,而不是更繁复的办法,解决一个功能痛点,是一件多么令人欣喜的事儿。

看了这篇文章,可能会给你一种误解,似乎 JavaScript 为代表的前端编程技术,再也不需要学了。

其实不是这样的。

可以想象,开发门槛降低以后,将来会有更多的人使用 Python 来做 Web 应用。

用 Streamlit 这样的方法,他们只是开发出了一个原型。

要是想打造精品,就必须精细调控很多细节。

这时候, 如果你精通 Javascript ,那你潜在的合作对象一下子就多了起来,你掌握的这门技术,也就有了更大的价值。

还记得吗?我不止一次给你强调过,比起一个工具自身的能力来,协作网络更重要。忘了的话,记得复习《学 Python ,能提升你的竞争力吗?》。

这就好像印刷术的发明,不是让会写字这件事儿变得失去价值,而是全社会都增大了对好作品的渴求。深刻的思考,加上有效的文字表达,会让你生存得更好。

当然,如果你不希望精通写作技艺,只是想做一个抄书匠糊口。那么印刷术就可能会替代你的工作,结果就不那么美妙了。


小结

这篇文章,我为你介绍了 Streamlit 这款有趣的工具。希望你读过之后,掌握了以下知识点:

借助 Streamlit ,你可以用纯 Python 编制 Web 应用;

学 Web 设计依然很有前途,因为你的潜在合作群体正在迅速扩大;

不要惹魔法师(优秀程序员)。他们的痛点需求会转化成无尽的战斗力,兴许会直接替掉你的日常工作。

更多Python知识,请关注:Python自学网!!

QQ群课堂、腾讯课堂极速版、钉钉等几种直播方式,对比这几种直播平台优劣势如下:
QQ群课堂
优点:QQ用户多,安装的人多,可以省去专门下载软件的麻烦,而且QQ在文件共享、群管理方面首屈一指,是其它软件所不能比的。再者因为直接在群里开播,所以学生加入也很方便,点一下就进来了!
1、控麦问题,电脑QQ点击静音或取消时显示不明显,且不同版本的QQ提示也不同,低版本的QQ可直接开麦、关麦,最新版的学生端有语音提示,但是需要学生手动打开(可能是受某直播软件“隐私门”启发)。

2、手机QQ不支持屏幕分享。
腾讯课堂极速版
优点:腾讯课堂是专门上网课用的,最专业,网课功能最全:签到、举手、答题卡、画笔等等,看上去非常专业,而且还有一个最牛的黑科技,那就是可以一键分享系统音频,这是其它任何教学类直播软件所没有的!可参看我另一篇文章的说明。上网课的困惑——怎样在分享屏幕的同时分享电脑声音?另外,腾讯课堂加入课堂也非常简单,第一次加入以后就会自动记忆,以后打开客户端直接就能点进去。
缺点:腾讯课堂有两个版本,一个是教师版,叫腾讯课堂极速版,另一个是学生版,就叫腾讯课堂,教师端目前只有电脑版。再一个就是感觉腾讯课堂比QQ群和腾讯会议延时厉害。

钉钉
优点:可以一次发起多个群聊会议,上传作业(家校本)方便
缺点:不能与学生开麦沟通,需要申请,
时常卡顿有延迟。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13502313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-20
下一篇 2023-08-20

发表评论

登录后才能评论

评论列表(0条)

保存