[笔记]pyinstaller打包streamlit
安装streamlit
pip install streamlit==1.19.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
再安装pyinstaller
pip install pyinstaller==5.8.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
streamlit主程序为app.py
pyinstaller打包streamlit
创建一个hooks文件夹,在下面创建一个python文件(例如:hook-streamlit.py),代码如下:
from PyInstaller.utils.hooks import copy_metadata
datas = copy_metadata("streamlit")
然后在相同目录(app.py文件)下,创建一个run_app.py文件
然后输入以下代码:
import streamlit.web.cli as stcli
import os, sys
def resolve_path(path):
resolved_path = os.path.abspath(os.path.join(os.getcwd(), path))
return resolved_path
if __name__ == "__main__":
sys.argv = [
"streamlit",
"run",
resolve_path("app.py"),
"--global.developmentMode=false",
]
sys.exit(stcli.main())
先打包第一次:
注意要有以上三个文件
打包命令如下:(是在app.py文件夹目录下面打包)
pyinstaller --onefile --additional-hooks-dir=./hooks run_app.py --clean
然后就会生成上面的run_app.spec这个文件,先将这时候的dist和build文件删掉。
打开run_app.spec文件(自带的记事本就可以打开),编辑下面部分
#添加下面部分
from PyInstaller.utils.hooks import collect_data_files
from PyInstaller.utils.hooks import copy_metadata
datas = [("你的streamlit安装位置/streamlit/runtime","./streamlit/runtime")]
datas += collect_data_files("streamlit")
datas += copy_metadata("streamlit")
block_cipher = None
#修改下面a里面的datas为=datas
a = Analysis(
['run_app.py'],
pathex=[],
binaries=[],
datas=datas,
hiddenimports=[],
hookspath=['./hooks'],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
然后确认无误以后就开始的第二次打包,
输入以下指令:
pyinstaller run_app.spec --clean
然后会在dist文件夹下面,生成的run_app.exe文件,这时候运行会报错,找不到文件,只需要将前面的app.py文件复制到这个文件夹下面,就可以正常运行了。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 oldming
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果