我知道如何在常规Python解释器会话中重新加载常规Python模块.这个问题记录了如何做得很好:
出于某种原因,我在Django的"manage.py shell"解释器会话中遇到了麻烦.要重新创建我的问题,请启动此处的基本Django教程:
创建"民意调查"应用程序和"民意调查"类后,通过"manage.py shell"启动解释器并将"民意调查"应用程序导入其中.
import polls.models as pm
Run Code Online (Sandbox Code Playgroud)
创建一个新的"民意调查"对象:
p = pm.Poll()
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利.现在回到您的源代码并添加任意方法或属性.例如,我添加了:
def x(self):
return 2+2
Run Code Online (Sandbox Code Playgroud)
现在回到解释器并"重新加载"模块:
reload(pm)
Run Code Online (Sandbox Code Playgroud)
现在尝试使用您的新方法或属性:
p1 = pm.Poll()
p1.x()
Run Code Online (Sandbox Code Playgroud)
你会收到这条消息:
'Poll' object has no attribute 'x'
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?我还尝试重新运行import命令,使用不同的语法导入模块,删除对任何"Poll"对象或"Poll"类的所有引用.我也尝试过使用IPython解释器和普通的Python(v2.6)解释器.似乎没什么用.
在常规解释器会话中使用与任意Python模块相同的技术可以很好地工作.我似乎无法让它在Django的"shell"会话中工作.
顺便说一句,如果它有任何区别,我在Ubuntu 9.04机器上这样做.
我试图在IPython中运行Django shell:
ipython manage.py shell
Run Code Online (Sandbox Code Playgroud)
它报告以下错误:
键入"manage.py help"以获取有关特定子命令的帮助.
我搜索并找到了一个流行的解决方案,可以指导您安装django.extensions
并启用它settings
.
我正在创建一个最小的项目,而解决方案很重.同时,我必须在每个项目上安装并启用它.
有轻量级的方式吗?
我开始一个新项目,
python manage.py shell -i ipython
无法工作
$ python manage.py shell -i ipython
CommandError: Couldn't import ipython interface.
$ ipython --version
6.4.0
Run Code Online (Sandbox Code Playgroud)