utilizzando profili in ipython e Django
Domanda
Ho un prodotto di Django sto usando ipython con cui interagire.
Sto cercando di avere moduli caricati automaticamente quando inizio una shell:
shell manage.py pitone
Ho copiato .ipython / ipythonrc alla directory principale del progetto e aggiunto al file:
import_some module_name model1 model2
Tuttavia, quando inizio il guscio, questi nomi non sono corso di caricamento.
Che cosa sto facendo di sbagliato?
Soluzione
Non so su ipythonrc, ma se avete solo bisogno i modelli, è possibile utilizzare django-extensions
. Dopo averlo installato, hai una pletora di nuovi comandi managment, tra cui shell_plus
, che aprirà una sessione ipython e autoload tutti i vostri modelli:
python manage.py shell_plus
Altri suggerimenti
BryanWheelock La soluzione non funzionerà perché la shell è il risultato della progenie non un Interatction diretta con esso. Che cosa si vuole fare è questo -. O almeno questo è quello che faccio
All'interno del vostro spazio di lavoro (il luogo in cui si digita python manage.py shell
) creare un file ipythonrc. In esso inserire il seguente:
include ~/.ipython/ipythonrc
execute from django.contrib.auth.models import User
# .
# .
# .
execute import_some module_name model1 model2
Per esempio ho anche aggiungere le seguenti righe nel mio ..
# 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 ""
Questo consente di utilizzare la registrazione nei moduli e tenerlo asciutto. Spero che questo aiuti.
shell_plus
Comando di Django-estensioni in grado di importare il modello automaticamente, ma sembra non può caricare il profilo di ipython. Ho fatto qualche lavoro hacky per rendere questo fatto.
utilizzare start_ipython
per lanciare ipython shell anziché embed
e passare alcuni argomenti.
Ho anche scritto un post sul blog, è possibile trovare dettaglio qui