【问题标题】:Python Error NameError: name '…' is not defined [closed]Python错误NameError:名称'...'未定义[关闭]
【发布时间】:2016-03-11 15:02:23
【问题描述】:

我是编程新手,尤其是 Python。如果有帮助,我正在尝试位于此处的 Udacity 免费课程:

https://www.udacity.com/course/viewer#!/c-ud088/l-3621198668/m-3612388742

我在那个视频中的 1:14 时间戳。

不同之处在于,与他们拥有的 Python 2.7 版本相比,我在 Windows 10 上拥有 Python 3.5 版。我也在使用 Sqlalchemy 1.0.9 版(他们使用的是 0.9 版)。我已经能够将他们的说明从他们的版本翻译成新版本。但是,当我收到以下错误时,我不确定出了什么问题。

在 Python 控制台中,我输入:

items = session.query(MenuItems).all()

我收到以下错误消息:

回溯(最近一次通话最后一次): 文件“”,第 1 行,在“ NameError:未定义名称“MenuItems”

如果我遗漏了什么,请告诉我。提前谢谢你。

【问题讨论】:

  • 这通常意味着你要么没有定义 MenuItems 应该是什么,要么你可能忘记从其他类/模块导入它。
  • 另外,请检查即使代码路径已定义该变量,也没有其他路径未定义。

标签: python python-2.7 sqlalchemy nameerror python-3.5


【解决方案1】:

NameError:名称“MenuItems”未定义

当您收到该错误时,您要么在定义之前使用了某个名称,要么在导入之前使用了某个名称。为避免这种情况,您需要在某个地方使用 from x import MenuItem 或 MenuItem = ... 或 class MenuItem 之类的定义

在那之前我看了一些视频,教练导入了这样的视频:

from database_setup import Base, Restaurant, MenuItem

因此,如果您已关注视频,您应该在 database_setup.py 中定义一个 class MenuItem

我建议您重新观看 "Putting it All Together",以便正确获取模块和导入。

【讨论】:

  • 感谢大家的所有反馈。 Bakkal,由于某种原因,当我重新阅读您的“从数据库导入...”行时(即使我输入的所有内容都正确),我意识到我在“MenuItem”中添加了一个“s”,这就是为什么它不是在职的。非常感谢你的观点。一旦获得足够的声誉,我会将答案标记为已解决。
  • 我试过了,它说我需要 15 个声望 :( ...我计划在获得 15 个声望后回到我的所有帖子(这样我就可以投票了)。:)
【解决方案2】:

这意味着您没有一个名为 MenuItems 的对象(您是否拼写不同?)。你需要先定义一些东西,然后再使用它。 您应该有一个类似于以下内容的语句:

MenuItems = {... code}

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2013-01-13
    • 1970-01-01
    • 2016-12-20
    • 2020-12-23
    • 2014-03-18
    相关资源
    最近更新 更多