Pergunta

Eu tenho um produto Django Estou usando ipython para interagir com.

Eu estou tentando ter módulos carregados automaticamente quando eu iniciar um shell:

python shell manage.py

Copiei .ipython / ipythonrc para o diretório raiz do projeto e adicionado ao arquivo:

import_some module_name model1 model2

No entanto, quando eu iniciar o shell, esses nomes não estão sendo carregados.

O que estou fazendo de errado?

Foi útil?

Solução

Eu não sei sobre ipythonrc, mas se você só precisa de modelos, você pode usar django-extensions . Depois de instalá-lo, você tem uma infinidade de novos comandos gestão, incluindo shell_plus, que abrirá uma sessão ipython e autoLoad todos os seus modelos:

python manage.py shell_plus

Outras dicas

BryanWheelock Sua solução não vai funcionar porque o seu shell é o resultado da desova não um interatction direto com ele. O que você quer fazer é isso -. Ou pelo menos isso é o que eu faço

Dentro de sua área de trabalho (o lugar onde você digita python manage.py shell) criar um arquivo ipythonrc. Nele coloque o seguinte:

include ~/.ipython/ipythonrc

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

Por exemplo, eu também adicionar as seguintes linhas no meu ..

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

Isso permite que você usar o log em seus módulos e mantê-lo seco. Espero que isso ajude.

comando shell_plus de django-extensões pode importar o modelo automaticamente, mas parece que não pode carregar o perfil de ipython. Eu fiz algum trabalho hacky para fazer este feito.

uso start_ipython para lançar ipython desembolsar em vez de embed e passar alguns argumentos a ele.

Eu também escreveu um post no blog, você pode encontrar o detalhe aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top