Environment variable indicating my app is running on streamlit sharing


I am currently deploying an app to streamlit sharing, where I allow users to play around with pre-trained text generation models, but also lets them train their own using their own dataset if they want to.

Due to the limited size of the VMs, I want to make it so that users can only train models if they have cloned the github repo to their local machine and are training using their own resources.

What I am not sure about however is how to know if my app is running in the streamlit sharing vm. Is there some kind of evironment variable I could check? IE

os.environ["IS_STREAMLIT_SHARING"] == True

And then I could do some conditional logic in my app like:

if os.environ.get("IS_STREAMLIT_SHARING"):
    st.warning("As you are on streamlit sharing you cannot run traning. Please clone repo to train your own model")
    # train model

If not, are there any other ways I could tell if an app is running on streamlit sharing or not?

Looking forward to your response.


EDIT: Add some more clarity to request

My 2 cents! Differences that I can see from my local environments to Streamlit Share.

Environment vars:

These ones are not available on my local box


Other option should be to check for some file. Files that are unlikely to be available on your local environment:

/entrypoint # Unless you're running a docker container
/home/appuser/.streamlit/ # this one is a directory
1 Like

@franciscoed Aha, thank you very much!

While these certainly seem like they will do the trick (and I will use in the short term), I wonder if the streamlit team think it could be useful to add an explicit environment variable on the streamlit sharing VMs that match the one I defined in my question so it can be used in a more natural way

(ie, the way I would use those environment variables Francisco has mentioned would be to check that they exist and then if they exist, know I am in streamlit sharing, rather than just explicitly an environment variable that tells me I am in streamlit sharing)

I agree, a simple IS_STREAMLIT_SHARING variable would be quite handy.

In the mean time, maybe you can try something like…

import os
IS_STREAMLIT_SHARING = os.getenv('USER') == 'appuser'