将Streamlit应用打包成可执行文件
1.要将Streamlit应用打包成可执行文件(exe),可以使用PyInstaller工具。以下是具体步骤:
安装必要的库
首先,确保安装了Streamlit和PyInstaller:
pip install streamlit pyinstaller
创建Streamlit应用
编写一个简单的Streamlit应用,例如app.py:
import streamlit as st
st.title("我的超棒应用")
x = st.slider("x")
st.write(x, "的平方是", x * x)
创建打包脚本
在项目根目录下创建一个名为run_app.py的文件,内容如下:
import streamlit.web.cli as stcli
import os
import sys
if __name__ == "__main__":
# PyInstaller onefile 模式下的解压临时目录
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
# 切换工作目录到真正的程序根目录
os.chdir(os.path.dirname(os.path.abspath(__file__)))
# 这里的 streamlit app 是什么名字,需要修改下,我的这里叫main.py
app_path = os.path.join(base_path, "myapp.py")
# 确保工作目录正确
if not os.path.exists(app_path):
print("找不到 myapp.py:", app_path)
sys.exit(1)
sys.argv = [
"streamlit",
"run",
app_path,
"--global.developmentMode=false",
]
sys.exit(stcli.main())
创建hooks文件夹和hook-streamlit.py文件
在项目根目录下创建一个名为hooks的文件夹,并在其中创建一个名为hook-streamlit.py的文件,内容如下:
from PyInstaller.utils.hooks import copy_metadata
datas = copy_metadata("streamlit")
第一次打包
运行以下命令进行第一次打包:
pyinstaller --onefile --additional-hooks-dir=./hooks run_app.py --clean
修改spec文件并进行第二次打包
打开生成的run_app.spec文件,添加以下内容:
from PyInstaller.utils.hooks import collect_data_files
from PyInstaller.utils.hooks import copy_metadata
from PyInstaller.utils.hooks import collect_submodules
datas = [(r"D:\auto_test\.venv\Lib\site-packages\streamlit\runtime","./streamlit/runtime")]
datas += collect_data_files("streamlit")
datas += copy_metadata("streamlit")
# 把你的项目打包进去
datas += [('./myapp.py', '.')]
a.datas = datas或者
datas=datas,
noarchive=False,
然后运行以下命令进行第二次打包:
pyinstaller run_app.spec --clean
这样就会在dist文件夹下生成一个可执行文件run_app.exe
通过以上步骤,你可以将Streamlit应用成功打包成exe文件,并在其他电脑上运行。

浙公网安备 33010602011771号