我正在工作中在 Streamlit 中创建一个应用程序。因为大多数人对编程一无所知(包括如何启动 Streamlit),所以我想用启动 Streamlit 的代码创建一个可执行文件。
这是我的代码:
import os
cmd = 'streamlit run main.py'
os.system(cmd)
接下来我使用 pyinstaller 来更改它到一个exe文件中。但是,exe 文件打开并关闭,并且 Streamlit 未打开。我该如何解决这个问题?我还尝试使用 main.py 的绝对文件路径 - 也不起作用
遇到了一个常见问题!
os.system()
的问题在于它会启动一个新进程,并且的 Python 脚本不会等待 Streamlit 启动。因此,该窗口会短暂闪烁,然后关闭。
可以按照以下步骤操作来解决此问题:
1. 使用
subprocess.Popen
subprocess.Popen
允许启动一个进程并与其进行交互。重要的是使用
shell=True
来确保正确解释命令:
import subprocess
cmd = 'streamlit run main.py'
process = subprocess.Popen(cmd, shell=True)
2. 使用 Streamlit 内置功能
从 Streamlit 1.8.0 版本开始,可以使用
streamlit.cli
模块直接从的 Python 脚本运行 Streamlit 应用程序。这提供了一种更集成、更可靠的方式来启动的应用程序。
import streamlit.cli
if __name__ == '__main__':
streamlit.cli.main(['streamlit', 'run', 'main.py'])
创建可执行文件
完成上述步骤后,可以使用 PyInstaller 创建可执行文件:
pyinstaller --onefile your_script.py
这将创建一个独立的可执行文件,当运行时,将启动的 Streamlit 应用程序。
其他注意事项:
-
依赖项:
确保的 Streamlit 应用程序所需的所有依赖项都包含在 PyInstaller 可执行文件中。可以使用
--hidden-import
选项或创建一个requirements.txt
文件来实现此目的。 -
工作目录:
如果的 Streamlit 应用程序依赖于相对于其执行位置的特定文件或目录,请确保在运行
subprocess.Popen
或streamlit.cli.main
之前设置正确的工作目录。
通过这些调整,应该能够创建一个可执行文件,该文件可以为的同事轻松启动 Streamlit 应用程序,而无需他们担心任何技术细节!
标签:python,operating-system,streamlit From: 78788366