Tengo un producto Django con el que estoy usando iPython para interactuar.

Estoy tratando de cargar módulos automáticamente cuando inicio un shell:

Python manage.py shell

Copié .ipython / ipythonrc en el directorio raíz del proyecto y lo agregué al archivo:

Import_some module_name model1 model2

Sin embargo, cuando inicio el shell, estos nombres no se están cargando.

¿Qué estoy haciendo mal?

3
BryanWheelock 1 jul. 2009 a las 19:55

3 respuestas

La mejor respuesta

No sé acerca de ipythonrc, pero si solo necesita los modelos, puede usar django-extensions. Después de instalarlo, tiene una gran cantidad de nuevos comandos de administración, incluido shell_plus, que abrirá una sesión de ipython y cargará automáticamente todos sus modelos:

python manage.py shell_plus
5
Benjamin Wohlwend 1 jul. 2009 a las 16:53

BryanWheelock Su solución no funcionará porque su caparazón es el resultado del engendro, no una interacción directa con él. Lo que quieres hacer es esto, o al menos esto es lo que hago.

Dentro de su espacio de trabajo (el lugar donde escribe python manage.py shell) cree un archivo ipythonrc. En él pone lo siguiente:

include ~/.ipython/ipythonrc

execute from django.contrib.auth.models import User
# .
# .
# .
execute import_some module_name model1 model2

Por ejemplo, también agrego las siguientes líneas en la mía.

# 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 ""

Esto le permite utilizar el registro en sus módulos y mantenerlo SECO. Espero que esto ayude.

1
rh0dium 19 ago. 2009 a las 23:19

El comando shell_plus de django-extensions puede importar el modelo automáticamente, pero parece que no puede cargar el perfil de ipython. He hecho un trabajo hacky para hacer esto.

Use start_ipython para iniciar el shell de ipython en lugar de embed y pasarle algunos argumentos.

También escribí una publicación de blog, puedes encontrar el detalle aquí

0
michaelyin 5 abr. 2015 a las 13:32