en utilisant des profils à ipython et Django
Question
J'ai un produit Django J'utilise ipython d'interagir avec.
Je suis en train d'avoir des modules automatiquement chargés quand je commence un shell:
manage.py shell python
Je l'ai copié .ipython / ipythonrc dans le répertoire racine du projet et ajouté au fichier:
import_some module_name modèle1 model2
Cependant, quand je commence le shell, ces noms ne sont pas chargés.
Qu'est-ce que je fais mal?
La solution
Je ne sais pas ipythonrc, mais si vous avez seulement besoin des modèles, vous pouvez utiliser django-extensions
. Après avoir installé, vous avez une pléthore de nouvelles commandes de managment, y compris shell_plus
, qui ouvrira une session de ipython et autoload tous vos modèles:
python manage.py shell_plus
Autres conseils
BryanWheelock Votre solution ne fonctionnera pas parce que votre shell est le résultat de la fraie pas un interatction direct avec elle. Qu'est-ce que vous voulez faire est ce -. Ou du moins est-ce que je fais
Au sein de votre espace de travail (l'endroit où vous tapez python manage.py shell
) créer un fichier ipythonrc. Dans le mettre comme suit:
include ~/.ipython/ipythonrc
execute from django.contrib.auth.models import User
# .
# .
# .
execute import_some module_name model1 model2
Par exemple ajouter également les lignes suivantes dans le mien ..
# Setup Logging
execute import sys
execute import logging
execute loglevel = logging.DEBUG
execute logging.basicConfig(format="%(levelname)-8s %(asctime)s %(name)s %(message)s", datefmt='%m/%d/%y %H:%M:%S', stream=sys.stdout )
execute log = logging.getLogger("")
execute log.setLevel(loglevel)
execute log.debug("Logging has been initialized from ipythonrc")
execute log.debug("Root Logger has been established - use \"log.LEVEL(MSG)\"")
execute log.setLevel(loglevel)
execute log.debug("log.setlevel(logging.DEBUG)")
execute print ""
Cela vous permet d'utiliser l'enregistrement dans vos modules et garder sec. Espérons que cela aide.
shell_plus
commande de django-extensions peuvent importer le modèle automatiquement, mais il semble ne peut pas charger le profil de ipython. Je l'ai fait un peu de travail hacky pour faire de ce fait.
utiliser pour lancer ipython start_ipython
shell au lieu de passer quelques embed
arguments à lui.
J'ai aussi écrit un billet de blog, vous pouvez trouver le détail ici