如何从 Python 脚本中 运行 Streamlit 应用程序?
How Can I Run a Streamlit App from within a Python Script?
有没有办法从 python 脚本中 运行 命令 streamlit run APP_NAME.py
,它可能类似于:
import streamlit
streamlit.run("APP_NAME.py")
由于我正在处理的项目需要跨平台(和打包),我不能安全地依赖对 os.system(...)
或 subprocess
.
的调用
希望这对其他人有用:
我查看了我的 python/conda bin 中的实际 streamlit 文件,它有这些行:
import re
import sys
from streamlit.cli import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
从这里,您可以看到命令行上的 运行ning streamlit run APP_NAME.py
与(在 python 中)相同:
import sys
from streamlit import cli as stcli
if __name__ == '__main__':
sys.argv = ["streamlit", "run", "APP_NAME.py"]
sys.exit(stcli.main())
所以我把它放在另一个脚本中,然后 运行 该脚本到 运行 来自 python 的原始应用程序,它似乎工作正常。我不确定这个答案是如何跨平台的,因为它仍然在某种程度上依赖于命令行参数。
您可以 运行 来自 python 的脚本作为 python my_script.py
:
import sys
from streamlit import cli as stcli
import streamlit
def main():
# Your streamlit code
if __name__ == '__main__':
if streamlit._is_running_with_streamlit:
main()
else:
sys.argv = ["streamlit", "run", sys.argv[0]]
sys.exit(stcli.main())
我更喜欢使用子进程,它使得通过另一个 python 脚本执行许多脚本变得非常容易。
The subprocess module allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several older modules and functions:
import subprocess
import os
process = subprocess.Popen(["streamlit", "run", os.path.join(
'application', 'main', 'services', 'streamlit_app.py')])
有没有办法从 python 脚本中 运行 命令 streamlit run APP_NAME.py
,它可能类似于:
import streamlit
streamlit.run("APP_NAME.py")
由于我正在处理的项目需要跨平台(和打包),我不能安全地依赖对 os.system(...)
或 subprocess
.
希望这对其他人有用: 我查看了我的 python/conda bin 中的实际 streamlit 文件,它有这些行:
import re
import sys
from streamlit.cli import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
从这里,您可以看到命令行上的 运行ning streamlit run APP_NAME.py
与(在 python 中)相同:
import sys
from streamlit import cli as stcli
if __name__ == '__main__':
sys.argv = ["streamlit", "run", "APP_NAME.py"]
sys.exit(stcli.main())
所以我把它放在另一个脚本中,然后 运行 该脚本到 运行 来自 python 的原始应用程序,它似乎工作正常。我不确定这个答案是如何跨平台的,因为它仍然在某种程度上依赖于命令行参数。
您可以 运行 来自 python 的脚本作为 python my_script.py
:
import sys
from streamlit import cli as stcli
import streamlit
def main():
# Your streamlit code
if __name__ == '__main__':
if streamlit._is_running_with_streamlit:
main()
else:
sys.argv = ["streamlit", "run", sys.argv[0]]
sys.exit(stcli.main())
我更喜欢使用子进程,它使得通过另一个 python 脚本执行许多脚本变得非常容易。
The subprocess module allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several older modules and functions:
import subprocess
import os
process = subprocess.Popen(["streamlit", "run", os.path.join(
'application', 'main', 'services', 'streamlit_app.py')])