Streamlit have access to other libraries outside the venv

Hello guys!
I’m learning streamlit and I’m creating a virtual environment to use the streamlit and learn about it. using “python3 -m venv my_env” to create the virtual environment, Inside the my_env I don’t have any packages installed other than “pip, setuptools” which are the defaults.

I created a python file and imported pandas while running the app I got an error that pandas is not installed which is okay because I haven’t installed the package yet inside the my_env. But while running “streamlit run app.py” I don’t get any error. it’s like streamlit library has access to my other libraries.

can someone explain if this is normal or I have made something wrong with streamlit path inside my env. paths?

Indeed, scripts that were installed outside the venv are accesible within it. In a developer setup, running those scripts directly is likely going to bit you because they may run in the wrong environment without you even noticing.

To make sure you run streamlit in the correct environment, activate the environment and then run:

python3 -m streamlit run app.py

The same applies to other python scripts, say ipython, jupyter…

1 Like

thanks that was helpful.
but can you explain what does adding “python3 -m” to the streamlit command mean?

The same as in python3 -m venv. If you run python3 -h you will find:

usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options (and corresponding environment variables):
[several lines skipped]
-m mod : run library module as a script (terminates option list)

It is explained in more detail in the documentation.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.