在iPython和Django中使用配置文件

时间:2009-07-01 15:55:13

标签: python django ipython

我有一个Django产品,我正在使用iPython进行交互。

我正在尝试在启动shell时自动加载模块:

python manage.py shell

我已将.ipython / ipythonrc复制到项目的根目录并添加到文件中:

import_some module_name model1 model2

但是,当我启动shell时,这些名称没有被加载。

我做错了什么?

3 个答案:

答案 0 :(得分:5)

我不知道ipythonrc,但如果你只需要模型,你可以使用django-extensions。安装之后,你有了大量的新管理命令,包括shell_plus,它将打开一个ipython会话并自动加载你的所有模型:

python manage.py shell_plus

答案 1 :(得分:1)

BryanWheelock你的解决方案不起作用,因为你的shell是生成的结果而不是直接与它交互。你想做的就是这个 - 或者至少这就是我所做的。

在您的工作区(您键入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 ""

这允许您使用模块中的日志记录并保持干燥状态。希望这会有所帮助。

答案 2 :(得分:0)

django-extensions的

shell_plus命令可以自动导入模型,但似乎无法加载ipython的配置文件。为了完成这项工作,我做了一些hacky工作。

使用start_ipython启动ipython shell而不是embed并传递一些参数。

我还写了一篇博文,你可以找到详细信息here