提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本文主要是记录自己部署Streamlit项目到Streamlit Cloud云的过程。
一、环境文件
1.requirements.txt (必要)
requirements.txt文件作用在于在Streamlit Cloud利用其生成python环境。
注意文件拼写,是requirements.txt而不是requirement.txt
如何导出requirements.txt
方法1:pip freezen > requirements.txt 和 pip list --format=freeze >requirement.txt
pip freezen > requirements.txt导出的包可能会带有库文件的本机的位置路径。
pip list --format=freeze >requirement.txt 导出的包不会带有路径。
该方法会导出环境的所库包
方法2:利用piprequs库
pipreqs可以通过对项目目录的扫描,发现使用了哪些库,生成requirements.txt。
1.在某个虚拟环境下安装该库(建议专门创建一个工具类python虚拟环境,专门存放工具类库)
pip install piprequs
2.项目根目录下,使用该库
piprequs ./ 或者 piprequs ./ --encoding==utf8
2.packages.txt
Streamlit Community Cloud 构建于 Debian Linux 之上。如果有想要通过apt-get install安装到环境中的包,则需要放进packages.txt文件中。
以官方说明为例:
mysqlclient是需要在ubuntu环境安装上面的几个包才可使用,所以如果用到mysqlclient,则要把以上内容写到packages.txt中。
推荐在packages.txt中写上的一些包:(一些与编译和图像视频相关的包)
ffmpeg
gifsicle
build-essential
python3-dev
gdal-bin
libgdal-dev
踩坑记录:
1.ImportError: libGL.so.1: cannot open shared object file: No such file or directory
原因:
这个错误通常是因为系统缺少 libGL.so.1 这个共享库,它是 OpenGL 的一部分,许多图形相关的应用程序和库都需要它
解决方法1:
所以在packages.txt文件中加上ffmpeg、libsm6、libxext6即可
解决方法2:
使用opencv_python_headless库包而不是opencv_python库包
在requirements.txt文件中
2.NameError: name ‘LOADER_DIR’ is not defined
解决方法:
在packages.txt中加入ffmpeg即可,或者直接在packages.txt中:
二、项目结构
requirements.txt和packages.txt是所需环境文件。app.py是streamlit入口文件。
三、项目部署
1. 把本地项目推送到自己的Github账号上
此处不过多说明,自己学习如何使用Git管理和推送项目
2.创建Streamlit Cloud账号
在streamlit Cloud社区创建账号,然后绑定github账号。
推荐直接使用github账号登录
3.创建应用
登录之后,创建新的app
然后选择对应github仓库和分支,以及入口程序(我的入口程序为app.py)。然后会自动生成APP URL(也可更改为自己想要的URL)
点击Deploy!后就会开始部署项目。
可点击右下角的Manage app
展开,看到部署过程,一些错误信息也会展示出来。