我有一个使用 iPython 与之交互的 Django 产品。
我试图在启动 shell 时自动加载模块:
python manage.py 外壳
我已将 .ipython/ipythonrc 复制到项目的根目录并添加到文件中:
进口一些模块名称模型1模型2
但是,当我启动 shell 时,并没有加载这些名称。
我究竟做错了什么?
我不知道 ipythonrc,但如果你只需要模型,你可以使用django-extensions
. 安装后,您将获得大量新的管理命令,包括shell_plus
,它将打开 ipython 会话并自动加载所有模型:
python manage.py shell_plus
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 ""
这允许您在模块中使用日志记录并使其保持干燥。希望这可以帮助。
shell_plus
django-extensions 的命令可以自动导入模型,但似乎无法加载 ipython 的配置文件。我做了一些 hacky 工作来完成这件事。
用于start_ipython
启动 ipython shell 而不是embed
并向其传递一些参数。
我也写了一篇博文,你可以在这里找到详细信息