How to import a local python file in streamlit?

I am trying to import a folder called myconfig in streamlit. Outside streamlit it works.
I am doing from myconfig.myconfig import LOGO_PATH

It gives me an error saying no module named myconfig. It is similar to this question:

but the answer here didn’t solve my problem. Help is appreciated.
Folder structure -

root
   myconfig
      myconfig.py
   main
      main.py

Trying to import some constants from myconfig.py to main.py

any thoughts here?

Hey @anansrivastava,

not having a Minimum Working Example (post a MWE if this solution doesn’t work) to go off of, I would say its your directory structure here.

You have a root folder with 2 sub-folders names myconfig and main. In myconfig/ is your python config file and in your main/ is your Streamlit app python file (a bit of an educated guess here)

Now unless im on my head here, you can’t actually have this type of directory structure (not easily and its “bad” practice to do so) for your modules in Python. Checkout this link for more detail.

Python only looks in the Current Working Directory (CWD), in your case anything in root/main/ and of course your system path. Python it will not know that myconfig is one directory above your main directory. If you change your directory structure to this, it will solve your problem:

root/
    main/
        main.py
        myconfig/
            myconfig.py

Hope this helps!
Marisa

Thanks. Solved it.

Hello,
I ran into the same error and on my side I ended up launching streamlit with the command
python -m streamlit.cli main/main.py. This work around works well for me, if your myconfig folder has an __init__.py file so it is detected as a package.
Bye !

2 Likes