一、前言
之前看我同事搭建了一個簡易的網頁,覺得挺有趣的,一直想學習下來着,然而機緣巧合,前陣子才知道原來是用Streamlit開發的呀,於是又開始了自己的三分鐘熱情了,哈哈哈。
二、Streamlit是什麼
1、Streamlit的定義
Streamlit是一個開源的Python庫,是 機器學習工程師專用的應用程序框架, 第一個專門針對機器學習和數據科學團隊的應用開發框架 , 利用Streamlit可以快速構建機器學習應用的用戶界面。
2、Streamlit的特色
(1)API簡單明瞭,易上手:https://docs.streamlit.io/
(2)無須學習前端知識(html、css、javascript)
Streamlit 基於tornado框架,封裝了大量互動組件,同時也支持大量表格、圖表、數據表等對象的渲染,並且支持柵格化響應式佈局。
(3)支持markdown和html文本的渲染
Streamlit的默認渲染語言就是markdown;除此以外,Streamlit也支持html文本的渲染,這意味着你也可以將任何html代碼嵌入到streamlit應用裏
3、什麼情況適用Streamlit
開發web的可選方案:
(1)前後端都用js:vue + node.js等
(2)前端用html,後端用python:Flask、Django等
(3)前後端都用Python:streamlit
但是如果我:
(1)並不熟悉前端設計、或者沒有前端藝術細胞;
(2)也不想實現太複雜的網頁結構;
(3)只是想給我的python程序用極短的時間快速生成一個基於web的GUI
那麼,streamlit就是一個非常好的解決方案。事實上,streamlit官網也將其主要定位於實現機器學習和數據科學的web應用的工具。當然,你也可以將其用於給自己的python腳本創建前端。
三、Streamlit安裝
我的機子安裝並沒有那麼順利,差點就從入門到放棄了,還好堅持了一會兒最後終於安裝成功了,下面簡單說一下安裝的艱辛之路吧。
1、直接pip命令安裝
安裝命令:pip install streamlit
安裝後報錯:AttributeError: module 'enum' has no attribute 'IntFlag'
解決思路:
This is likely caused by the package enum34. Since python 3.4 there's a standard library enum module, so you should uninstall enum34, which is no longer compatible with the enum in the standard library since enum.IntFlag was added in python 3.6.
這可能是由包Enum34引起的。因爲Python3.4有一個標準庫枚舉模塊,所以您應該卸載Enum34,因爲在Python3.6中添加了Enum.Intflag,所以它不再與標準庫中的枚舉兼容。
解決方法:pip uninstall enum34 #卸載enum34
2、第二次pip命令安裝
當我嘗試pip install streamlit
時失敗,並顯示錯誤消息:
ERROR: "Could not build wheels for pyarrow which use PEP 517 and cannot be installed directly"
解決思路(網友回答如下):
我也面臨同樣的問題,我注意到pyarrow是Streamlight版本0.63.0中的一個要求。因此,您可以使用pip install streamlit==0.62.0
,它會很好地工作。Streamlit版本0.62.1和python版本3.8.5運行良好
解決方法:pip install streamlit==0.62.0
3、第三次pip命令安裝
這次是指定了版本安裝pip install streamlit==0.62.0
安裝成功後,運行Streamlit hello報錯:TypeError: Descriptors cannot not be created directly.
解決思路:python 依賴 protobuf 奇怪報錯 TypeError: Descriptors cannot not be created directly。在網上搜索後發現似乎是最新的包編譯時出了問題,開發人員已經會在更新後修復。
解決方法:在沒有發佈新版本之前先降級使用吧:pip install protobuf==3.19.0
4、檢查是否安裝成功
以上就是我艱辛的安裝之路,好像還少了一次報32位錯誤的,算了,之前安裝沒有把圖截下來,總之遇到問題拼命百度一下,總是會有解決方案的。言歸正傳,檢查是否安裝成功,直接在cmd輸入 streamlit hello 就行,如上圖會出現welcome to streamlit,會要求輸入email,其實不用輸 直接回車即可自動跳轉到網頁,如下圖,這是官方默認的demo:
(1)Demo首頁
(2)Plotting Demo
(3)DataFrame Demo