There is a new version of this tutorial available for Ubuntu 22.04 (Jammy Jellyfish).

How to Install Django on Ubuntu 16.04 LTS

In this tutorial, we will install Django 1.10 on an Ubuntu 16.04 LTS server. Django can be installed on a server in many ways, in this tutorial, I will show you 3 different ways to install Django:

  1. Django installation with pip.
  2. Install Django with virtualenv.
  3. Install Django fron it's github repository.

When the Django installation is done, I will show you the first steps to start a new project with the Django web framework.

Django is a web application framework written in python that follows the MVC (Model-View-Controller) architecture, it is available for free and released under an open source license. It is fast and designed to help developers get their application online as quickly as possible. Django helps developers to avoid many common security mistakes like SQL Injection, XSS, CSRF and clickjacking. Django is maintained by the Django Software Foundation and used by many big technology companies, government, and other organizations. Some large websites like Pinterest, Mozilla, Instagram, Discuss, The Washington Post etc. are developed with Django.


  • Ubuntu 16.04 - 64bit.
  • Root privileges.

Step 1 - Setup python 3 as Default Python version

We will configure python 3 before we start with the Django installation.

On my Ubuntu machine, there are two versions of python available, python2.7 as default python version and python3. In this step, we will change the default python version to python 3.

Check the python version:




Python 2.7.12 (default, Jul  1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.

So the default python is 2.7 at the moment.

Next, remove default python 2 and change the default to python 3 with the 'update-alternatives' command:

update-alternatives --remove python /usr/bin/python2
update-alternatives --install /usr/bin/python python /usr/bin/python3 1

Now check again the python version:




Python 3.5.2 (default, Jul  5 2016, 12:43:10)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.

Configure default python on Ubuntu to python 3

Step 2 - Install Django

In this step, I will show you 3 ways to install Django. Please follow either chapter 2.1, 2.2 or 2.3 to install Django but not all 3 options at the same time :)

2.1. Install Django with Pip

Pip is a package management system for python. Python has a central package repository from which we can download the python package. It's called Python Package Index (PyPI).

In this tutorial, we will use python 3 for Django as recommended by the Django website. Next, we will install pip for python 3 from the Ubuntu repository with this apt command:

apt-get install python3-pip

The installation will add a new binary file called 'pip3'. To make it easier to use pip, I will create a symlink for pip3 to pip:

which pip3
ln -s /usr/bin/pip3 /usr/bin/pip

Now check the version :

pip -V

PIP version

The pip installation is done. Now we can use the pip command to install python packages. Let's install Django on our server with pip command below:

pip install django==1.10


We set django==1.10 to get a specific version. If you want a different version, just change the number e.g. to django==1.9 etc.

If you have an error about the locale settings, run the command below to reconfigure the locale settings:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

When the installation is done, check the Django version with the command below:

django-admin --version

Alternatively, we can use the command below:

import django

Check the Django version

Django 1.10 has been installed on the system with pip. Proceed with chapter 3.

2.2. Install Django with Virtualenv

Virtualenv is a python environment builder, it is used to create isolated python environments. We can choose the version of python that will be installed in the virtualenv environment. This is very useful for developers, they can run and develop an application with different python versions and different environments on one OS.

Virtualenv is available on PyPI, we can install it with the pip command:

pip install virtualenv

Now we can use the virtualenv command to create a new environment with python3 as default python version. So let's create a new environment "mynewenv" with python3 as the python version and pip3 for the django installation.

virtualenv --python=python3 mynewenv

Note :

--python=python3 is a binary file for python 3.

mynewenv is the name of the environment.

The command will create a new directory called 'mynewenv' which contains the directories bin, include and lib.

The virtualenv has been created, now let's log into the new environment with the command below:

source mynewenv/bin/activate

If you do not have the source command, you can run this command instead:

. mynewenv/bin/activate

Note: If you want to get out from the virtual environment, use the command 'deactivate'.

Now check the pip version:

pip -V

Pip will be automatically installed in the virtual environment.

Next, install Django in the thevirtual environment that we've created:

pip install django==1.10

When the installation finished, check the Django installation:

django-admin --version

Django installed inside virtualenv

Django 1.10 has been successfully installed in our virtual environment. Proceed with chapter 3.

2.3. Install Django from Git Repository

In this chapter, we will install the Django web framework inside the system, not in a virtual environment. I will show you how to install it manually from the Django Git repository. Make sure you have git installed on your server. If you don't have git, install it with the command below:

apt-get install git -y

Next, create a new python virtual environment and activate it:

virtualenv --python=python3 django-git
source django-git/bin/activate

Then clone the Django git repository with the command below:

cd django-git
git clone git:// django-dev

Install django with this pip command:

pip install -e django-dev/

-e =  Install a package in editable mode or a local package. In this chapter, we install Django from the local code that we've cloned.

When the installation process is done, let's check the Django version on the server:

django-admin --version

We see the Django 1.11 dev version.

Django installed from source - Dev version

The manual Django installation is finished.

Step 3 - Create you First Project with Django

In this step, we will install Django inside a virtual environment and then start our first project with Django.

Install virtualenv on the server and create a new environment named 'firstdjango' :

pip install virtualenv
virtualenv --python=python3 firstdjango

Now go to the 'firstdjango' directory and activate the virtual environment, then install Django with the pip command:

cd firstdjango/
source bin/activate
pip install django==1.10

Next, create a new project called 'myblog' with the django-admin command:

django-admin startproject myblog

It will create a new directory 'myblog' that contains the Django files:

ll myblog

-rwxr-xr-x 1 root root  249 Sep 06 09:01*
drwxr-xr-x 2 root root 4096 Sep 06 09:01 myblog/

Go to the 'myblog' directory and run the '' file :

cd myblog/
python runserver

The runserver option will create an HTTP connection with python on localhost IP and port 8000. If your development environment is on a separate server, as in my example here I'm using an Ubuntu server with I :, you can use the server IP so you can access Django from outside of the server.

python runserver

Now check from your browser:

Django listens on port 8000

The Django default page is working and inside the server, you can look at the access log:

[31/Aug/2016 17:04:40] "GET / HTTP/1.1" 200 1767

Next, we will configure the Django admin. Django will automatically generate the database for a superuser. Before we create the superuser, run the command below:

python migrate

migrate: make adds the models (adding fields, deleting etc.) into the database scheme, the default database is sqlite3.

Now create the admin/superuser:

python createsuperuser

Username (leave blank to use 'root'): admin
Email address: [email protected]
Password (again):
Superuser created successfully.

Django configure superuser account

The Django super user has been added, now you can execute the runserver command, then go to the browser and visit the django admin page:

python runserver

Visit Django admin page: Login with username admin and your password, you will see the admin page:

Django admin login page.

Django admin Login page

The Django admin dashboard.

Django admin dashboard

Django has been successfully installed inside a virtual environment and we've created a sample Django project named 'firstdjango'.


Django is a web framework based on the Python programming language, it is released as free software under an open source license and maintained by the Django Software Foundation. Django is very fast and allows it to build web applications rapidly. Django is a web framework that uses the MVC (Model-View-Controller) paradigm. We can install Django on a server with the pip command, in a virtual environment with virtualenv and directly from the Django git repository.

Share this page:

24 Comment(s)

Add comment

Please register in our forum first to comment.


By: Essa

what about deploing on apache or nginx

By: sym

Great howto. Thanks.


Hey I am getting the error

update-alternatives: error: error creating symbolic link '/etc/alternatives/python.dpkg-tmp': Permission deniedwhen running 'update-alternatives --install /usr/bin/python python /usr/bin/python3 1'

any help would be greatly appreciated!

By: Bruno Lourenço

Is it possible integrate Djago with mySQL? 

Great Post! Very usefull!

By: Athar

Please dont delete python2 ever.

This will screw up your ubuntu.

By: Vanja

To fix the locale on the latest release of Ubuntu 16.04 I had to type 'export LC_ALL=C'. It did not work with the language spec.

Thanks for instructive introduction to django!

By: dan

how do you remove ?

By: cynthia


By: Himanshu

Thank you

By: Amol

 update-alternatives --install /usr/bin/python python /usr/bin/python3update-alternatives: --install needs <link> <name> <path> <priority>Use 'update-alternatives --help' for program usage information.


Why this issue is appearing

By: frstattack

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1

worked for me

By: priyanka

Instead of removing ubuntu, add alias python=python3 in .bashrc file and type the same in terminal. Now you will be able to use pyhton3. 

By: iam

In step 1, I believe the update-alternatives --install /usr/bin/python python /usr/bin/python3 command needs a "prioirty" parameter at the end.update-alternatives: --install needs <link> <name> <path> <priority>It should be: update-alternatives --install /usr/bin/python python /usr/bin/python3 1

By: Joseph Saunders

The step to set python 3.5.2 as the default python needs the 'priority' arg.


update-alternatives --install /usr/bin/python python /usr/bin/python3

Needs toing like this:

update-alternatives --install /usr/bin/python python /usr/bin/python3 1

By: Ankit Kesharwani

In case of any error or failure, execute the same command with "sudo".

By: yodabug

If you follow this article will it not break apt? Apt requires python2-if you default the system to pyhton3 there will be BIG trouble. Is there a way to do this and NOT make python3 the system default? Make it available for apache/django but nothing else on the system. I run Xubuntu 1604 release.

By: Elisha Kalya

To whom it may concern, Thank you for this tutorial. I had been having trouble installing, setting up django on my ubuntu. This tutorial helped sort my problem and that I am now  up and running. I look forward to developing a great python web app. Thanks.

By: Miguel Carrera

Hi! Just to comment that in the command:

"update-alternatives --install /usr/bin/python python /usr/bin/python3", you've missed the <proirity>

It should be:

"update-alternatives --install /usr/bin/python python /usr/bin/python3 1" as shown in the image.

By: adithya

what's after this basic things completed?

suggest me tutorials

By: arben


By: Gatot

I failed to install using PIP, but I succeeded using virtual env

By: Gary

Will installing this mess up my server configuration? running apache2 + php 7.0.30. I want to use a django routine to connect to backblaze

By: Mighty Investor

Woot.  It worked.  After three other tries on other websites' tutorials, yours worked flawlessly.  Thanks!

By: okello

much appreciated work to get me started on django thanks alot