先上效果图

由于本人在学习深度学习的过程中,有很多关于python的代码,为此想要思考用部分的python代码作为底层,开发一些简单使用的用户界面,因此考虑采用pyqt,gradio,streamlit来作为前端页面。pyqt我也会写,但是由于用QT写界面,工作量相较于其他两位大,为此我不得不考虑效率问题,在这里我选择了streamlit来作为前端开发。

streamlit第一步

pyinstaller打包streamlit

streamlit第一步

先创建一个anconda环境

conda activate base
 #激活环境
conda create -n pyqt(你的环境名) python=3.7.16
#创建一个新的虚拟环境,我这里的环境名是pyqt
conda activate pyqt
#激活新建的环境

首先,先安装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的简单代码

我的代码参考如下:

import streamlit as st
import pandas as pd
import numpy as np
st.title("我的超棒应用")
#todo 设置滑动条
x=st.slider("x")
st.write(x,"squared is",x*x)
#todo 设置用户输入
url=st.text_input("Enter URl")
st.write("The Entered URL is",url)
#todo 设置check框读取数据库
df = "连接数据库"
if st.checkbox('Show dataframe'):
    st.write(df)
#todo 复选框
option=st.selectbox("你想选择什么?",["显示图表","关闭显示"])
st.write("you selected:",option)
option2=st.selectbox("你想选择什么?",["刷新","不刷新"])
st.write("you selected:",option2)
col1, col2, col3 = st.columns(3)
col1.metric("Temperature", "70 °F", "1.2 °F")
col2.metric("Wind", "9 mph", "-8%")
col3.metric("Humidity", "86%", "4%")
#todo 侧边栏
st.sidebar.title('菜单侧边栏')
add_selectbox = st.sidebar.selectbox(
    "这个是下拉框,请选择?",
    ("1", "Home 2", "Mobile 2")
st.sidebar.write("选择了:",add_selectbox)
def load_data():
    # todo 画表
    chart_data = pd.DataFrame(np.random.randn(20, 3),columns=['a', 'b', 'c'])
    st.line_chart(chart_data)
if(option=="1"):
    load_data()
def load_data(url):
    df = pd.read_csv(url)
    return df
df = load_data(r"E:\train\pytorch_learn\diabetes.csv")
st.dataframe(df)
# 如果按钮被点击,就触发重新运行
placeholder = st.empty()
    # 创建一个空的占位符
    placeholder = st.empty()
    # 一些可能出错的代码...
except RuntimeError as e:
    # 使用占位符来替换掉异常信息
    placeholder.empty()

注意这里,要运行py文件是不可以直接运行的,要在cmd命令里面输入以下代码

stream run app.py
#这里的app.py是我的python文件名

如果你是pycharm的话,采用下面的终端运行即可

如果出现这个,咱们的第一步就成功了!给自己比个心(✪▽✪) 

pyinstaller打包streamlit

然后就到了,比较麻烦的步骤,怎么打包这个streamlit文件,为此我查遍了很多文件,截止目前为止,但是都没有谁做出来并分享了的。不过皇天不负有心人,有一份python文件打包方式给了我很不错的思考。

咱们首先创建一个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文件复制到这个文件夹下面,就可以正常运行了。

点击exe文件运行即可,出现下面这个页面就是成功了~( ̄▽ ̄~)~

如果觉得文章不错,请给小编点赞,关注,收藏!

欢迎有问题留言,看到会回复!

由于本人在学习深度学习的过程中,有很多关于python的代码,为此想要思考用部分的python代码作为底层,开发一些简单使用的用户界面,因此考虑采用pyqt,gradio,streamlit来作为前端页面。然后就到了,比较麻烦的步骤,怎么打包这个streamlit文件,为此我查遍了很多文件,截止目前为止,但是都没有谁做出来并分享了的。然后会在dist文件夹下面,生成的run_app.exe文件,这时候运行会报错,找不到文件,然后咱们就可以开始咱们伟大的一步了,先写出我们的streamlit的简单代码。
以前一直用pyinstaller 打包python文件成为exe,出错多,指令麻烦,关键是很多时候还不知道怎么改,昨天无意间发现一个可视化打包工具.在这里做个记录分享一下 工具也是使用pyinstaller打包的,但是可选项换成了可视化ui,也有中文语言可以选择 注意:使用前请安装pyinstaller pip install -i https://pypi.doubanio.com/simple/ pyinstaller 1.安装可视化打包工具 pip install -i https://pypi.doubanio.com/simple/ Auto-py-to-exe 安装完成后在控制台输入命令可直接启动 Auto-py-to-exe 启动后界面如下 可以明显的看出这是由 使用PyinstallerPython脚本或者项目打包,生成可执行的.exe文件。 Pyinstaller是一个很不错的免费打包工具,支持Windows,Linux和MacOS,完美支持32位和64位系统。 pyinstaller安装 pip install pyinstaller 打包参数 # 常用打包参数 # -F .
参考文献:Deploying a Simple Streamlit app using Docker | Engineering Education (EngEd) Program | Section Docker 是一个虚拟化平台,旨在通过使用容器来创建、运行和部署应用程序。我们将使用 Docker 部署一个使用 Streamlit 构建的简单机器学习应用程序。 在本教程中,我们将首先创建一个简单的机器学习模型,将其保存到 pickle 文件中以加载到我们的平台中,然后...
文章目录前言一、安装streamlit二、使用streamlit实现前端1.引入库总结写在最后一、python安装包写入requirements.txt二、利用requirements.txt安装结束语 摸鱼时刻,前段时间项目要求做一个图像检索接口,如期做完后,开始摸鱼 在摸鱼的过程想着一个问题,就是我能不能把自己做的接口直接展示在页面上,等着前端排期太慢了- - 别说,还真有特别简单的方法,可以通过streamlit这个框架(我理解为框架类似于Flask、Django等) 一、安装stream.
1、将python程序打包成单文件(使用 -F 参数)后,尝试运行外部文件却提示找不到的问题 当你将python程序打包成单文件(使用 -F 参数)后,运行程序,它实际上是先将exe内的资源文件解压到临时文件夹,然后再运行的,所以会导致这种问题 比如,当你在程序里面调用一个外部exe时,但却提示找不到该exe文件。 例子(这里我用win32api去隐式运行外部exe文件): import win32api win32api.ShellExecute(0, 'open', 'nginx.exe', '', '', 0) 首先,你需要将这个外部的exe文件添加进pyinstaller打包
这种问题通常是因为在打包时没有将所有依赖项都正确地打包进去。以下是一些可能的解决方案: 1. 确保在打包使用了正确的命令和参数。例如,如果您的应用程序使用了虚拟环境,则需要在打包之前激活该环境,并使用 `--hidden-import` 参数将环境中的所有依赖项都打包进去。 2. 尝试使用 PyInstaller 的 `--onedir` 参数而不是 `--onefile` 参数,以便您可以检查生成的文件夹中是否存在所有依赖项。 3. 确保您的应用程序中使用的所有依赖项都已正确地安装。您可以使用 `pip freeze` 命令生成一个包含所有依赖项的文本文件,并在打包之前检查它是否包含所有必需的依赖项。 4. 确保您的应用程序中使用的所有依赖项都能够在目标计算机上正常工作。例如,如果您的应用程序使用了某个第三方库,而该库依赖于某些 C 库,则需要在目标计算机上安装这些 C 库。 5. 尝试手动将缺少的模块复制到生成的文件夹中。如果您知道缺少的模块是哪个,可以尝试手动将其复制到生成的文件夹中,然后再次运行应用程序。 如果您仍然无法解决问题,请尝试使用其他打包工具,例如 cx_Freeze 或 PyOxidizer。
Helloorld_11: 错误信息“无法解析的外部符号 __imp__PathMatchSpec”通常表示链接器找不到某个函数或变量的定义。在这种情况下,它找不到 __imp__PathMatchSpec 这个符号的定义。 你注意修改pro文件里面的dll依赖的位置,还有就是QT编译build目录,选择我之前编译的文件夹1。 QT与paddleOCR2.6版本的联合使用(外加避坑注意事项) Timon---老赵: 无法解析的外部符号 __imp__PathMatchSpec 然后在附加依赖项中添加shlwapi.lib 联合OpenCV4.5.2利用微信开源的库识别二维码 Helloorld_11: 这倒是问住了,没试过耶。。。不过可以对图片进行预处理,里面有寻找到二维码的函数,你可以写个简单的循环,将找到的二维码区域一个一个放到识别二维码的函数里面去! 联合OpenCV4.5.2利用微信开源的库识别二维码 weixin_44988924: 大佬能远距离 一图多码 识别吗 利用pyinstaller打包streamlit移植到其他电脑上使用 chizaowyl: ModuleNotFoundError: No module named 'streamlit_tree_select' 这个第三方库不行。看安装库里的名字是streamlit-tree-select'。使用时的语句是from streamlit_tree_select import tree_select,而且使用时没问题,打包后运行找不到