0 前言
今天了解到有一個很強大的數(shù)據(jù)分析工具streamlit,下載安裝完發(fā)現(xiàn)啟動不了……沒錯就是本文的bug.
什么是protobuf
?
Protocol Buffers 是 Google 開發(fā)的一種數(shù)據(jù)交換格式,采用了一種類似于 XML 的簡單的語法,用于定義數(shù)據(jù)結(jié)構(gòu),并且可以將這些結(jié)構(gòu)序列化為二進制文件,以便在不同的編程語言之間進行數(shù)據(jù)交換。
它是一種和語言無關(guān)、平臺無關(guān)、可擴展的序列化結(jié)構(gòu)數(shù)據(jù)的方法。
它比 XML 更快地進行編碼解碼,可以用更小的文件大小來儲存數(shù)據(jù)。
相關(guān)環(huán)境:
Windows 64位
Python3.9
Steamlit1.16.0
protobuf3.19.1
1 場景還原
安裝streamlit
pip install streamlit
streamlit hello
報錯內(nèi)容:
ImportError: cannot import name ‘builder’ from ‘google.protobuf.internal’
2 解決方案
在安裝過程中,可以看到,官方推薦的protobuf
版本要求是**<4,>=3.12**,而我的版本是3.19.1,理論上是可以的。
但實際上卻是protobuf
在v3.20之后進行了簡化,builder.py有一些變動??赡?code>streamlit未做更新。
解決方法就是更新protobuf
。
pip install --upgrade protobuf
升級成功了,但是streamlit
還來湊熱鬧,提示我可能的錯誤:二者不兼容……(sl:不管實際對不對,反正要按我的設(shè)定走????)
升級完成后,我的版本為4.21.12。
不管這個報錯,重新開啟streamlit
。
streamlit hello
這回就沒有報錯了。文章來源:http://www.zghlxwxcb.cn/news/detail-818785.html
2022-12-26補充:protobuf == 3.20.3
也是可以的,今天在另外一臺電腦上裝了,由于一開始沒有 protobuf,默認給我裝了 3.20.3 的版本,可正常使用。文章來源地址http://www.zghlxwxcb.cn/news/detail-818785.html
到了這里,關(guān)于protobuf 的bug:ImportError_ cannot import name ‘builder‘ from ‘google.protobuf.internal‘的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!