Mon environnement Django dans IPython

Il y a différentes façons d’avoir accès à son environnement Django depuis le shell Python, la plus simple étant d’utiliser le shell fourni par django avec la commande

python manage.py shell

Mais étant habitué à IPython, j’ai cherché comment charger l’environnement de mon projet Django et y avoir accès dans IPython, je suis donc tombé sur ce post, j’ai légèrement modifié le code proposé pour finir avec ceci:

import os
if 'settings.py' in os.listdir(os.getcwd()):
    try:
        print "\nLoading Django environment"
        from django.core.management import setup_environ
        import settings
        setup_environ(settings)
        try:
            for app in settings.INSTALLED_APPS:
                if not app.startswith('django.'):
                    try:
                        exec("from %s.models import *" % app)
                        print "Imported models from '%s'" % app
                    except:
                        print "Can not import models from '%s'" % app
        except:
            print "Can not import project models"
        print "Django context successfuly loaded\n"
    except:
        print "Errors occured while loading Django context\n"

Il suffit de placer ce code dans un fichier « ~/.pythonrc », et ajouter

export PYTHONSTARTUP=~/.pythonrc

pour que ce code s’exécute à chaque lancement du shell Python (fonctionne également dans bpython).

Mais voilà, IPython possède son propre fichier de démarrage, du coup notre code n’est pas exécuté… Pas de problème! Il suffit d’ajouter

execfile ~/.pythonrc

au fichier ~/.ipython/ipythonrc, et voilà, il est maintenant possible d’utiliser la puissance de IPython sans les contraintes du chargement manuel de l’environnement Django.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s