# Python Virtual Environments

> Learn how to use Python virtual environments to isolate module versions per project, creating one with python -m venv and activating it with source activate.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2021-01-09 | Topics: [Python](https://flaviocopes.com/tags/python/) | Canonical: https://flaviocopes.com/python-virtual-environments/

It's common to have multiple [Python](https://flaviocopes.com/python-introduction/) applications running on your system.

When applications require the same module, at some point you will reach a tricky situation where an app needs a version of a module, and another app a different version of that same module.

To solve this, you use **virtual environments**.

We'll use `venv`. Other tools work similarly, like `pipenv`.

Create a virtual environment using

```sh
python -m venv .venv
```

in the folder where you want to start the project, or where you already have an existing project.

Then run

```sh
source .venv/bin/activate
```

> Use `source .venv/bin/activate.fish` on the Fish shell

Executing the program will activate the Python virtual environment. Depending on your configuration you might also see your terminal prompt change.

Mine changed from

`➜ folder `

to

`(.venv) ➜ folder `

Now running `pip` will use this virtual environment instead of the global environment.
