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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top