如何无需发布至GitHub/Heroku,本地分享Streamlit Web应用?
无需部署即可本地分享Streamlit应用的方法
下面提供两种无需发布到Heroku/GitHub,就能在本地局域网内分享给他人的方案,附完整实现步骤:
一、使用批处理(.bat)文件快速启动
这种方式适合对方电脑已安装Python/Conda环境的场景:
- 新建一个文本文件,重命名为
启动应用.bat(后缀必须是.bat) - 右键编辑该文件,根据你的环境修改以下代码:
@ECHO OFF :: 替换为你的Conda或Python安装根目录 set root=C:\ProgramData\Miniconda3 :: 激活conda环境(如果用的是系统默认Python,可跳过这步直接用python命令) call %root%\Scripts\activate.bat :: 切换到你的Streamlit应用所在文件夹 cd "D:\你的应用文件夹路径" :: (可选)如果对方环境缺少依赖,执行这步安装(需提前准备好requirements.txt) pip install -r requirements.txt :: 启动应用并允许外部访问 streamlit run app.py --server.enableCORS false --server.enableXsrfProtection false
- 保存后,把这个bat文件、你的
app.py代码、requirements.txt一起发给对方 - 对方双击bat文件,命令行里会显示访问地址(比如
http://你的本地IP:8501),让对方在浏览器输入该地址就能访问
注意:你和对方必须在同一个局域网下,比如连同一个WiFi。
二、打包成独立EXE文件(无需对方装Python)
如果对方没装Python,可把整个应用打包成独立EXE:
- 先在你的环境里安装打包工具:
pip install pyinstaller streamlit
- 在应用文件夹里新建
启动脚本.py,内容如下:
import streamlit.web.cli as stcli import sys if __name__ == "__main__": # 配置启动参数,允许外部访问 sys.argv = ["streamlit", "run", "app.py", "--server.enableCORS", "false", "--server.enableXsrfProtection", "false"] stcli.main()
- 打开命令行,进入应用文件夹,执行打包命令:
pyinstaller --onefile --windowed --add-data "app.py;." --add-data "requirements.txt;." 启动脚本.py
- 打包完成后,去文件夹里的
dist目录找生成的EXE文件(比如启动脚本.exe) - 把这个EXE连同应用用到的所有资源文件(比如图片、数据csv)一起发给对方,对方双击EXE就能启动应用,同样从命令行获取访问地址即可
注意:如果应用有外部资源,要确保EXE和资源在同一文件夹;打包后的EXE体积会偏大(包含Python运行环境),属于正常情况。
内容的提问来源于stack exchange,提问作者Tong
相关产品推荐
相关产品推荐

