Can streamlit access another script's data/variables?

I am running my streamlit app on heroku and my procfile looks like:

web: sh setup.sh && streamlit run main.py

if I were to add && python script.py

Would it run that script? And, more importantly, is there a way for my streamlit app to access either the terminal, or a value from that script?

That script essentially gets data and stores it into a database and runs either off my local pc or a raspberry pi. I’d like to be able to monitor it from the UI I built. If I could run it all from streamlit it would be even better…

Hi @dorealex,

One possible way to have your Streamlit app use terminal to run scripts could be to use the subprocess library.

In the following example, I have a plot.R file that generates a plot.png image. From within the Streamlit app, I use subprocess to run the R script (plot.R) and use st.image to display the image.

import streamlit as st
import subprocess
from PIL import Image

process = subprocess.Popen(["Rscript", "plot.R"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
result = process.communicate()

image = Image.open('plot.png')
st.image(image)

Note: You may replace Rscript with bash if you want to run scripts via Bash.

Hope this helps.

Interesting…

I’ll have to try it out, thanks!

1 Like