"
This article is part of in the series
Last Updated: Wednesday 29th December 2021

In this article, we are going to learn how to install Django on Windows, Mac and Linux. Since Mac and Linux are both derived from the Unix platform, the instructions about installing Django on Mac and Linux are almost identical to each other and we will present them in the same section. Windows, however, is so different from the other two operating systems that we need use one section to present the instructions about how to install Django on Windows.

Python Virtual Environment Setup

Often Python is already installed on your system if you're using a mainstream OS such as Windows, Mac OS X or Linux. However if it is not, you can download and install the appropriate Python version for your OS on the official Python website. Assuming you have Python 2.7.x installed on your OS, we will walk you through the steps to create a Django development environment on Window, Mac OS X and Linux in the following sections.

Before we dive into the steps to create a Django development environment, we'd like to review a useful tool called virtualenv. virtualenv is a tool to create isolated Python environments. Instead of writing code on top of one global Python environment, virtualenv allows you to create isolated "islands" or directories of Python environments each of which is an independent Python environment that has its own "system-level" packages and libraries.

Why do we need virtualenv since we can just write code running on top of the global Python environment?

Well, let's imagine a situation where my_library depends on another package dependent_library whose version has to be 1.0.0. When you upgrade the global Python environment from 2.7.3 to 2.3.3, dependent_library also gets upgraded to 1.2.0. Now my_library won't work anymore since it's calling methods and using classes from the 1.0.0 of dependent_library. Wouldn't it be nice if you can write my_library against an independent 1.0.0 dependent_library as well as another upgraded_my_library against 1.2.0?

Or imagine that you are programming on a shared hosting environment where your user does not have access to root-level directories such as /usr/lib which means you cannot modify the global Python environment into a version that you like. Wouldn't it be nice if you can create a Python environment inside your home directory?

Luckily, virtualenv solves all the aforementioned issues by creating an environment that has its own installation directories who do not share any library with other environments.

Setup virtualenv and Django in Windows

First, open your browser and navigate to virtualenv. Click the download button to get the source code of the latest virtualenv.

Second, open a Powershell instance and navigate to the directory into which you have downloaded the virtualenv source code and extract the tar file into a directory. Then you can change into that directory to install virtualenv for your current Python interpreter which could be invoked from command line.

[shell]
...> $env:Path = $env:Path + ";C:\Python27"
...> cd virtualenv-x.xx.x
...> python.exe .\setup.py install
Note: without Setuptools installed you will have to use "python -m virtualenv ENV"
running install
running build
......
[/shell]

Now you can create a virtualenv instance in your home directory.

[shell]
...> python.exe -m virtualenv python2-workspace
New python executable in ...
Installing Setuptools...
Installing Pip...
[/shell]

Now we can activate the new environment using the activate script. Note that Windows' execution policy is restricted by default which means scripts such as activate cannot be executed. Therefore, we need to change the execution policy to AllSigned in order to be able to activate the virtualenv.

[shell]
...> Set-ExecutionPolicy AllSigned

Execution Policy Change
The execution policy ...
... : Y
...> cd python2-workspace
...> .\Scripts\activate
(python-workspace) ...>
[/shell]

Notice that once the virtualenv is activated, you will see a string "(python2-workspace)" prepended to your command line's shell prompt. Now you can install Django inside the new virtual environment.

[shell]
...> pip install django
Downloading/unpacking django
......
[/shell]

Setup virtualenv and Django in Mac OS X and Linux

Installing virtualenv and Django on Mac OS X and Linux is similar to Windows. First, you download the virtualenv source code, unpack it and install it using your global Python interpreter.

[shell]
$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.10.1.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1294k 100 1294k 0 0 498k 0 0:00:02 0:00:02 --:--:-- 508k
$ tar xvf virtualenv-1.10.1.tar.gz
$ cd virtualenv-1.10.1/
$ sudo python setup.py install
Password:
running install
running bdist_egg
running egg_info
writing virtualenv.egg-info/PKG-INFO
writing top-level names to virtualenv.egg-info/top_level.txt
writing dependency_links to virtualenv.egg-info/dependency_links.txt
writing entry points to virtualenv.egg-info/entry_points.txt
reading manifest file 'virtualenv.egg-info/SOURCES.txt'
...
Installed /Library/Python/2.7/site-packages/virtualenv-1.10.1-py2.7.egg
Processing dependencies for virtualenv==1.10.1
Finished processing dependencies for virtualenv==1.10.1
[/shell]

Then you go back to your home directory and create a new virtualenv in that directory.

[shell]
$ virtualenv python2-workspace
New python executable in python2-workspace/bin/python
Installing Setuptools..............................................................................................................................................................................................................................done.
Installing Pip.....................................................................................................................................................................................................................................................................................................................................done.
[/shell]

Once the environment has been created, you can activate the environment and install Django in it.

[shell]
$ cd python2-workspace/
$ pip install django
Downloading/unpacking django
Downloading Django-1.5.4.tar.gz (8.1MB): 8.1MB downloaded
Running setup.py egg_info for package django

warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
Running setup.py install for django
changing mode of build/scripts-2.7/django-admin.py from 644 to 755

warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
changing mode of /private/tmp/python2-workspace/bin/django-admin.py to 755
Successfully installed django
Cleaning up...
[/shell]

Summary and Tips

In this article, we learned how to install virtualenv in Windows, Mac OS X and Linux and using its pip command to install Django. Since the virtual environments are separated from the rest of the system, the installed Django library only affects files executed within that particular environment. Compared to Mac OS X and Linux, setting up virtualenv in Windows requires one extra step to change the execution policy of scripts. Otherwise the steps to set up a Django virtual environment is almost identical across all platforms.

About The Author