How to use virtual environments in python 3

Virtual environments are a great way to not clutter your global namespace with all the python packages you might only use in one project.

First install it (here is the ubuntu-like version):

sudo apt install python3-pip python3.venv

Then you can create a virtual env for your project using the venv module in python3. So in your project path do:

python3 -m venv .env # creates a folder .env where all the environment is stored

Whenever you are in your project folder you can activate this environment and everything you install and required goes and comes from that active environment.

source .env/bin/activate # call this in your project-path

This will put a deactivate command to your path, that you can call, when you want to deactivate that environment again.


I like to put the .env files into my project folders, since they are mostly closely related, but theoretically you don’t have to do this. You could put all the different environments into a (user-)global path like ~/.venvs/ and activate those when you need them:

python -m venv ~/.venv/my-env1
source ~/.venv/my-env1/bin/activate