Django: mettre en place son environnement de développement

Faire un projet Django c’est bien.

Ne pas avoir à se prendre la tête pour installer tout un tas de dépendances ou pour déployer un projet Django, c’est quand même mieux.

Installation de easy_install

$ sudo apt-get install python-setuptools python-dev build-essential

Installation de pip

$ sudo easy_install pip

Installation de virtualenv

$ sudo pip install virtualenv

Création d’un environnement virtuel

Si ce n’est pas déjà fait, on va créer notre répertoire qui va accueillir tous nos environnements virtuels (ici, /srv/python-envs):

$ mkdir -p /srv/python-envs
$ cd /srv/python-envs

On peut ensuite créer notre nouvel environnement virtuel:

$ virtualenv --no-site-packages --distribute my_env

Installation d’un package dans l’environnement virtuel

On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).

Pour l’exemple, on choisi d’installer le package Yolk. Yolk est un outil pour lister les packages Python installés.

$ pip install -E my_env yolk

Activation et utilisation d’un environnement virtuel

On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).

On active l’environnement my_env:

$ source my_env/bin/activate

Pour test, on fait appel à Yolk pour lister les packages installés dans notre environnement virtuel:

$ yolk -l
Django          - 1.2.5        - active
Python          - 2.6.6        - active development (/usr/lib/python2.6/lib-dynload)
distribute         - 0.6.10       - active
pip             - 0.8.1        - active
wsgiref         - 0.1.2        - active development (/usr/lib/python2.6)
yolk            - 0.4.1        - active

On désactive l’environnement:

$ deactivate

On essaie Yolk à nouveau:

$ yolk -l
yolk: command not found

La commande est alors inconnue. Bien sur, elle est inconnue uniquement dans le cas où Yolk n’est pas installé sur votre système.

Installation de Django dans l’environnement virtuel

On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).

$ pip install -E my_env Django

Création d’un instantané de l’état des librairies installées

On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).

$ pip freeze -E my_env > pip-requirements.txt

/srv/python-envs/pip-requirements.txt:

Django==1.2.5
distribute==0.6.10
wsgiref==0.1.2
yolk==0.4.1

Installation de packages à partir d’un instantané

On se place dans le répertoire des environnements virtuels (ici, /srv/python-envs).

On reprend notre instantané créé précédemment pour faire une nouvelle installation, par exemple, dans un nouvel environnement vierge (ici, second_env):

$ pip install -E second_env -r /srv/python-envs/pip-requirements.txt

Note: On a bien sur la possibilité d’ajouter manuellement des packages à installer dans cet instantané (cf. pip requirements files)

Utilisation d’un environnement virtuel avec Django et le module Apache mod_wsgi

/srv/python-envs/my_env/django.wsgi:

import os
import sys
import site

site.addsitedir('/srv/python-envs/my_env/lib/python2.6/site-packages')

sys.path.append('/srv/python-envs/my_env')
sys.path.append('/srv/python-envs/my_env/my_project')

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

/etc/apache2/sites-available/django-my_env-my_project:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName www.example.com

    WSGIDaemonProcess www.example.com processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup www.example.com
    WSGIScriptAlias    /     /srv/python-devs/my_env/django.wsgi

    <Directory /srv/python-devs/my_env>
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /var/log/apache2/django-my_env-my_project-error.log
    LogLevel warn
    CustomLog /var/log/apache2/django-my_env-my_project-access.log combined
</VirtualHost>

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *