Python Package Management with Pipenv
Tags: python, packagemanagement, pip, pipenv
Published: 2019-04-08 14:40:15

---
title: Python Package Management with Pipenv
published: true
tags: python,package-management,pip,pipenv
canonical_url: http://www.vimalselvam.com/2019/03/02/python-package-management-with-pipenv/
---

Originally published in my [blog](http://www.vimalselvam.com/2019/03/02/python-package-management-with-pipenv/).

At my work I had to setup a package management for the Python based project. After almost 5 years, I’m putting my hands on Python and observed many things had changed. Especially, how we use the new Pipenv for managing python packages. Let’s see on how to use Pipenv in Mac to setup the package management for the project.  
Before starting, let me see what are the versions of python I’ve on my machine:

[![python version](https://i1.wp.com/www.vimalselvam.com/wp-content/uploads/2019/03/python-version.png?resize=300%2C251)](https://i1.wp.com/www.vimalselvam.com/wp-content/uploads/2019/03/python-version.png)

Surprise! I’ve two different versions installed on my machine. Fine, I wanted to use the  **Python 3.7.1** version for my development.  
 

## Create the project

Let’s create the project and setup the environment.

```
mkdir python-demo-project
cd python-demo-project
```

Install Pipenv first:

```
pip3 install pipenv
```

Setup pipenv environment to use **Python 3.x** version. Run the following from the current directory:

```
pipenv install --three
```

The above command will first create a virtual environment, then creates a **Pipfile** and then creates **Pipfile.lock**.

The Pipfile contains some useful information:

```
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.7"
```

Important blocks are `dev-packages`, `packages` and `requires`. Any packages required for only development purpose, will be added under `dev-packages` and any other packages like for production use, those will be added under `packages`. The `requires` section tells you that minimum required version is `3.7`.

First, let’s install few packages for production use. To install a package with particular version.

```
pipenv install pandas==0.24.1
```

This will install the package and update the lockfile with dependencies details. The `packages` section in your **Pipfile** should look like this now:

```
[packages]
pandas = "==0.24.1"
```

Let’s install a package for development purpose.

```
pipenv install numpy==1.16.2 --dev
```

The above command will install **numpy** package in the `dev-packages` section.

To run any command using our virtual environment, we can simply use **pipenv** for it. For example, to open the `python3` shell, you can simply trigger the following command.

```
~ pipenv run python
Python 3.7.1 (default, Nov 6 2018, 18:46:03)
[Clang 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
```

Notice the version of python it shows.

Now I’ve the package management in place. In my future posts, I’ll share more about my learnings. Keep watching and don’t forget to hit like and share in case you found this useful.