用streamlit做课设部署到streamlit cloud遇到的问题

谢诚
2023-12-01


课设要求:先爬取合肥的二手房数据(如果没问题的话),在此技术上,初步做一个系统原型,能够对二手房价格进行预测,以及实现二手房数据的查询,以Web展现。

写代码

#cmd
C:\Users\86182\.spyder-py3\二手房价格预测>#主文件夹,所有文件放在该目录下
C:\Users\86182\.spyder-py3\二手房价格预测>dir
C:\Users\86182\.spyder-py3\二手房价格预测 的目录

2022-06-10  20:02    <DIR>          .
2022-06-10  08:47    <DIR>          ..
2022-06-09  14:02                42 .gitignore
2022-06-10  20:02                 0 2.10.1
2022-06-10  20:02                 0 3.0
2022-06-10  15:35             3,312 a.txt
2022-06-08  21:44               532 app.py
2022-06-08  21:35    <DIR>          image
2022-06-09  14:02    <DIR>          Lib
2022-06-10  09:19       119,378,901 model.pkl
2022-06-08  10:26               509 multipage.py
2022-06-10  15:40    <DIR>          pages
2022-06-09  09:28                40 Procfile
2022-06-09  14:02               405 pyvenv.cfg
2022-06-10  09:00               627 Requirements.txt
2022-06-09  14:02    <DIR>          Scripts
2022-06-09  10:00               220 setup.sh
2022-06-08  19:37             2,246 streamlit1.py
2022-06-09  21:12    <DIR>          style
2022-06-07  20:16           692,241 train2.csv
2022-06-07  14:58         1,028,312 train2.xlsx
2022-06-08  10:41    <DIR>          __pycache__
2022-06-07  11:34         9,916,227 链家二手房分区.csv
2022-06-07  15:07            66,522 随机森林.png
              16 个文件    131,090,136 字节
               8 个目录 146,945,273,856 可用字节

C:\Users\86182\.spyder-py3\二手房价格预测\pages 的目录
2022-06-09  23:17               394 gross_data.py
2022-06-09  23:17             4,640 home.py
2022-06-10  15:40             3,265 predict.py
2022-06-09  23:17             1,600 research.py
2022-06-08  22:18             4,405 visualization.py

#cd ..可以回退到上一级目录,dir可以显示当前目录下的所有文件
#主文件夹下的model.pkl本来是封装了一个训练好的随机森林的模型,
#但是由于.pkl文件太大,无法手动上传到github上(好像超过25MB就不行了),
#而git lfs上传总是报错(搞了半天也解决不了),
#所以只能不打包训练好的模型,而是把训练代码放在predict.py里面。

以上不是代码,只是在cmd的命令行操作
在spyder上写好代码,在anaconda prompt上运行


(base) C:\Users\86182\.spyder-py3\二手房价格预测>streamlit run app.py

  You can now view your Streamlit app in your browser.
  Local URL: http://localhost:8501
  Network URL: http://192.168.43.213:8501

主目录下除了放main.py之外,还需要Procfile、requirements.txt、setup.sh
Procfile、setup.sh参考文章链接: 如何利用streamlit快速搭建一个web应用并部署到heroku服务器上
requirements.txt时代码运行时依赖的包

生成requirements.txt有两种方式:

1.这种方式会把所有的依赖包全部加入

pip freeze > requirements.txt

我使用的是这种方式,因为不知道什么原因,用第二种方式总是会报错

2.只加入该项目的依赖包
到项目目录下

pipreqs ./ --enoding=utf-8 --force

在github上建立一个新的仓库

链接: https://github.com/
登不上github可以下载pigcha(一个付费的vpn,不贵,而且不是包月或者包年,我上次买的是到2099年才过期,非常好下载非常好用,支持手机和pc),注册一个google邮箱

如果注册邮箱的过程中,手机收不到验证码:

上google网站(我是在IE浏览器上注册的,QQ浏览器不行),点右上角九个点,找到Gmail,在这里注册就可以了

进入github ,new一个新的respository,顺便复制一下url:
https://git@github.com/…/仓库名.git

上传或删除文件到github仓库

github可以手动上传文章,用git命令上传我会报错,也解决不了(流汗)
手动上传,create file时在文件名后面输入“/”就可以变成一个文件夹,就可以upload文件了(毕竟github手动无法上传文件夹,同时无法上传大文件,也无法删除文件)
删除respository可以在setting里拖到最底下选择delete
但是删除文件,需要如下操作:

git bash:就是选择文件夹,右击选择git bash here,就可以打开,有什么命令没有了就pip一下(没有git的 去官网下载一下)
下面的操作看这个文章:
链接: 删除github中已有的仓库和文章

部署到streamlit cloud

说一下我遇到的问题:

由于我导入的requirements.txt是用pip freeze(本地我也保存了用pipreqs生成的requirements.txt,方便查看我的项目用到了哪些包)所以有很多的包是无用的,耗时间是次要的,莫名其妙经常报错,然后就需要回github上删除报错的多余的包,遇到一个最离谱的问题:
Jjinja2 2.11.3
altair 4.0.2 depends on Jinja2
nbconvert 6.5.0 depends on Jinja2>=3.0
pyg2plot 0.108 depends on Jinja2~=2.11.2
幸好我的项目只用到了pyg2plot module,只要删除其他的包,再修改JInja2的版本就可以了

-[1]:如何利用streamlit快速搭建一个web应用并部署到heroku服务器上
[2]: https://github.com/
[3]: 删除github中已有的仓库和文章

 类似资料: