Invoking a Python subprocess in a deployed Streamlit app

假设你想调用一个子进程来运行一个Python脚本script.py在你部署的Streamlit应用streamlit_app.py中。例如,机器学习库Ludwig是通过命令行界面运行的,或者你可能想从Python中运行一个bash脚本或类似类型的进程。

您已经尝试了以下方法,但在运行script.py时遇到了依赖问题,尽管您已经在requirements文件中指定了Python依赖项:

# streamlit_app.py import streamlit as st import subprocess subprocess.run(["python", "script.py"])

当你运行上述代码块时,你将获得系统路径上的Python版本——不一定是Streamlit代码运行的虚拟环境中安装的Python可执行文件。

解决方案是直接使用sys.executable检测Python可执行文件:

# streamlit_app.py import streamlit as st import subprocess import sys subprocess.run([f"{sys.executable}", "script.py"])

这确保了script.py在与您的Streamlit代码相同的Python可执行文件下运行——即安装了您的Python依赖项的地方。

forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。