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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top