将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文件,并在其他电脑上运行。

posted @ 2025-11-17 16:57  赏金猎人小熊  阅读(2)  评论(0)    收藏  举报