---
title: "Python Virtual Environments"
date: 2019-05-21T23:04:54-04:00
draft: false
tags: [ "python" ]
---

Dependency management is hard.  Luckily with Python there is a program called `virtualenv` that can help isolate different projects and manage dependencies.

## Commands

To create a new python 3.7 environment type in the following:

```bash
virtualenv --python=python3.7 environment_name
```

Of course you can replace the python version with whichever version you like. Now to go into the environment do the following:

```bash
source environment_name/bin/activate
```

This now sets up your python interpretor and other utilities to use the installation in the `environment_name` folder. You can now install python packages using `pip` and have it only reside in this environment.

To save all currently installed packages into `requirements.txt`:

```bash
pip freeze > requirements.txt
```

You can then install those packages in a different virtualenv session with:

```bash
pip install -r requirements.txt
```

You can leave the virtualenv session with:

```bash
deactivate
```