我有一个Django产品,我正在使用iPython进行交互。
我正在尝试在启动shell时自动加载模块:
python manage.py shell
我已将.ipython / ipythonrc复制到项目的根目录并添加到文件中:
import_some module_name model1 model2
但是,当我启动shell时,这些名称没有被加载。
我做错了什么?
答案 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)
shell_plus
命令可以自动导入模型,但似乎无法加载ipython的配置文件。为了完成这项工作,我做了一些hacky工作。
使用start_ipython
启动ipython shell而不是embed
并传递一些参数。
我还写了一篇博文,你可以找到详细信息here