【问题标题】:Getting NameError with Django 1.5 and IPython使用 Django 1.5 和 IPython 获取 NameError
【发布时间】:2013-04-07 20:53:10
【问题描述】:

我正在运行 Django 1.5.1、Python 2.7.2 和 IPython 0.13.2。如果我从我的 Django 项目目录中执行“python ./manage.py shell”,我会收到以下错误:

from django import forms
class CommentForm(forms.Form):
    name = forms.CharField()

NameError: name 'forms' is not defined.

我知道表单被定义为当它执行“dir(forms)”时我可以看到它。我注意到这个错误只发生在我在 REPL 中运行 iPython 时。如果我启动 REPL 并且只使用普通的、旧的 Python 解释器,则不会发生错误。

有没有其他人遇到过这个问题?如果是这样,您知道为什么会发生这种情况以及是否有解决方法吗?

我应该补充一点,我过去在 REPL 中创建类时遇到过问题,直到我在类中创建了一个元类并定义了一个“app_label”变量。在这种情况下,这并没有什么不同。

谢谢。

【问题讨论】:

  • 您的项目文件夹中是否有一个名为 forms.py 的文件?
  • Django 习惯于吞下合法异常并重新引发泛型异常。我会看一下代码,甚至修改它以查看实际引发的异常可能是什么。
  • eandersson,不,我在项目中没有 forms.py 文件,但添加一个并不能解决问题。感谢您的建议。

标签: python django django-forms ipython


【解决方案1】:

django 1.5 不能正确启动 IPython。这是fixed in master,但未将修复程序向后移植到 1.5.1。如果您手动将该补丁应用到 core/management/commands/shell.py,IPython 应该可以正常工作。

【讨论】:

  • 我给 shell.py 打了补丁,解决了这个问题。非常感谢。
  • 非常感谢您!给其他猴子修补程序的一个注意事项:至少在我的 iPython 版本中,我在“前端”包上收到了弃用警告。您可以通过简单地删除“前端”层来消除该警告: from IPython.terminal.ipapp import TerminalIPythonApp 而不是 from IPython.frontend.terminal.ipapp import TerminalIPythonApp
猜你喜欢
  • 1970-01-01
  • 2013-11-21
  • 2023-03-21
  • 2021-03-17
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
相关资源
最近更新 更多