2009-07-01 2 views
3

У меня есть продукт Django, с которым я использую iPython для взаимодействия.с использованием профилей в iPython и Django

Я пытаюсь иметь модули автоматически загружаются, когда я запустить оболочку:

питон manage.py оболочки

Я скопировал .ipython/ipythonrc в корневой директории проекта и добавляют к файл:

import_some module_name model1 model2

Однако, когда я начинаю оболочки, эти имена не загружаются.

Что я делаю неправильно?

ответ

5

Я не знаю о ipythonrc, но если вам нужны только модели, вы можете использовать django-extensions. После того, как вы установите его, вы получите множество новых команд, в том числе Managment shell_plus, который откроет IPython сессию и автозагрузку все ваши модели:

python manage.py shell_plus 
1

BryanWheelock Ваше решение не будет работать, потому что ваша оболочка является результат нереста не прямое взаимодействие с ним. То, что вы хотите сделать, это - или, по крайней мере, это то, что я делаю.

В вашей рабочей области (место, где вы вводите python manage.py shell) создайте файл ipythonrc. В нем поместить следующее:

include ~/.ipython/ipythonrc 

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

Например, я также добавить следующие строки в шахте ..

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

Это позволяет использовать регистрацию в ваших модулей и держать его сухим. Надеюсь это поможет.

0

shell_plus команда django-extensions может автоматически импортировать модель, но, похоже, не может загрузить профиль ipython. Я сделал какую-то взломанную работу, чтобы сделать это.

использовать start_ipython для запуска оболочки ipython вместо embed и передать некоторые аргументы.

Я также написал сообщение в блоге, вы можете найти подробную информацию here