【问题标题】:How to download exe file from Streamlit?如何从 Streamlit 下载 exe 文件?
【发布时间】:2022-01-11 02:18:52
【问题描述】:

我制作了一个 .py 脚本,将其转换为 .exe 文件,以使用 pyinstaller 制作一个 Windows 桌面应用程序。 我这样做了:

pyinstaller --onefile -w test.py

用户如何使用 Streamlit 下载此应用程序?专门使用 Streamlit 下载按钮。

我试过st.download_button('Download app', data='app.exe', file_name='App.exe')

它不起作用,并且 Windows 计算机出现蓝框错误(例如当您的电池电量不足时),表示无法运行此应用程序。可能是因为参数data 是字符串而不是文件目录所以我尝试了:

from pathlib import Path
exe_path = "drowsy_setup.exe"
path = Path(exe_path)
st.download_button('Download app', data=path, file_name='Drowsy_App.exe')

我在 requirements.txt 文件中添加了 pathlib,但它给出了错误:

RuntimeError: This app has encountered an error. The original error message is redacted to prevent data leaks. Full error details have been recorded in the logs.
Traceback:
File "/home/appuser/venv/lib/python3.7/site-packages/streamlit/script_runner.py", line 354, in _run_script
    exec(code, module.__dict__)
File "/app/website-desktop-app/test.py", line 15, in <module>
    st.download_button('Download app', data=path, file_name='Drowsy_App.exe')
File "/home/appuser/venv/lib/python3.7/site-packages/streamlit/elements/button.py", line 212, in download_button
    self.dg._get_delta_path_str(), data, download_button_proto, mime, file_name
File "/home/appuser/venv/lib/python3.7/site-packages/streamlit/elements/button.py", line 313, in marshall_file
    raise RuntimeError("Invalid binary data format: %s" % type(data))

我尝试在 requirements.txt 中不使用 pathlib,因为它是默认的 python 库,但它给出了相同的错误。如何修复此错误?有没有更好的方法来使用 Streamlit 下载桌面应用程序?

版本:python(3.7), streamlit(1.3.0)

【问题讨论】:

    标签: python windows pyinstaller streamlit pathlib


    【解决方案1】:

    尝试以下操作,另请参阅doc

    binary_file = 'Drowsy_App.exe'
    
    with open(binary_file, "rb") as file:
         btn = st.download_button(
             label="Download Drowsy_App.exe",
             data=file,
             file_name="Drowsy_App.exe",
             mime="application/octet-stream"
    )
    

    【讨论】:

    • 我尝试了它与打印在终端上的简单 Hello World 应用程序一起使用的代码,但它不适用于我的实际应用程序,它仍然在蓝色框中显示无法在计算机上运行错误(就像电池电量不足的消息)。可能是脚本错误,而不是 Streamlit 或 Pyinstaller 错误,所以我将此答案标记为已接受的答案。我不明白我的脚本有什么问题,它在本地完美运行。忘了提及我使用 Inno 为我的应用程序创建了一个设置向导:jrsoftware.org/isinfo.php 这是我试图从 Streamlit 网站下载的 .exe 文件
    猜你喜欢
    • 2021-08-06
    • 2021-11-29
    • 1970-01-01
    • 2022-11-10
    • 2016-10-17
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多