Multipage app not running st.set_page_config when going directly to subpage

Hi.
When I start the app and go directly to

http://localhost:8051/subpage

the wide layout that is set in st.set_page_config is not applied. If I then go to the root page and back to subpage it has updated with the wide layout.

Is there a way to make st.set_page_config run on subpages when that is the landing page?

1 Like

Not sure if streamlit updated or if I had the st.set_page_config not on line 2 before, but now it works setting st.set_page_config at line 2 after importing streamlit.

I ran into exactly this problem using streamlit 1.12.2. Is there a systematic solution to this problem?

I’ll try to put together a minimal case to reproduce the bug and follow up.

Unfortunately, each page is evaluated and run as a separate app, other than the navigation sidebar, so running set_page_config doesn’t automatically apply unless you run it on the subpage. However, as you can see, it does “stick”, so that if you set it on one page, it continues on the following pages unless you set it to a different value. We are looking into ideas for making improvements to multipage apps to include shared functionality for cases exactly like this.

For now, one solution is to make a function that does all the common setup that you want on each page, and then import and run that function on each of the pages.

Make a function that does all the common setup that you want on each page, and then import and run that function on each of the pages.

Thanks @blackary ! Here’s a hacky approach that worked just fine for my purposes, in case someone else finds it helpful:

import streamlit

def set_streamlit_page_config_once():
    try:
        streamlit.set_page_config(layout="wide")
    except streamlit.errors.StreamlitAPIException as e:
        if "can only be called once per app" in e.__str__():
            # ignore this error
            return
        raise e

Then I import and call set_streamlit_page_config_once() at the top of each files in pages/