【问题标题】:NoneType' object has no attribute '__getitem__'NoneType' 对象没有属性 '__getitem__'
【发布时间】:2014-06-09 11:52:46
【问题描述】:

在 openstack 设置中尝试 nova-list cli 命令时出现以下错误。 NoneType' 对象没有属性 'getitem'

 DEBUG (shell:777) 'NoneType' object has no attribute '__getitem__'
    Traceback (most recent call last):
      File "/opt/stack/python-novaclient/novaclient/shell.py", line 774, in main
        OpenStackComputeShell().main(map(strutils.safe_decode, sys.argv[1:]))
      File "/opt/stack/python-novaclient/novaclient/shell.py", line 685, in main
        self.cs.authenticate()
      File "/opt/stack/python-novaclient/novaclient/v1_1/client.py", line 169, in authenticate
        self.client.authenticate()
      File "/opt/stack/python-novaclient/novaclient/client.py", line 382, in authenticate
        auth_url = self._v2_auth(auth_url)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 469, in _v2_auth
        return self._authenticate(url, body)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 484, in _authenticate
        return self._extract_service_catalog(url, resp, respbody)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 307, in _extract_service_catalog
        self.auth_token = self.service_catalog.get_token()
      File "/opt/stack/python-novaclient/novaclient/service_catalog.py", line 29, in get_token
        return self.catalog['access']['token']['id']
    TypeError: 'NoneType' object has no attribute '__getitem__'
    ERROR: 'NoneType' object has no attribute '__getitem_

_'

这是什么意思?我的 openstack 设置是否有问题,或者是一些与 python 相关的错误?

【问题讨论】:

  • 在没有更多上下文的情况下无法判断。您需要包含完整回溯和您的代码,以便人们提供有用的答案。
  • 您是否提供了任何命令行参数?如果有,你输入了什么?
  • yes.nova list.list 是这里的一个参数
  • 你正在访问一个空对象(None),这是python NullPointerException
  • 您是否定义了有效的 keystone 服务目录? keystone service-listkeystone endpoint-list 输出什么?请用结果更新您的问题。

标签: python openstack openstack-nova


【解决方案1】:

从字面上看,'NoneType' object has no attribute... 表示您正在尝试访问属性或调用具有值 None 的对象的方法。

实际上,这意味着您可能在某处存在错误,即在为变量赋值之前使用变量,或者使用返回 None 的函数中的值。调试这个问题的第一步是问自己“为什么这个变量设置为None?”。

在这种特定情况下,self.catalogself.catalog['access']self.catalog['access']['token']None

【讨论】:

  • 我的猜测是,这实际上不是代码问题。看起来有些人试图解释来自 nova 客户端 cli 的错误,并且可能对应用程序错误背后的配置问题更感兴趣。可以说更像是一个 Serverfault 问题而不是 StackOverflow 问题。
【解决方案2】:

错误信息

TypeError: 'NoneType' object has no attribute '__getitem__'

原因

在另一个函数调用的参数列表中调用 void 方法,导致我出现“NoneType”错误。

解决方案

为了解决,我只是让 void 方法返回另一个函数的参数列表中我需要的值。

【讨论】:

    猜你喜欢
    • 2014-08-14
    • 2012-12-04
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2018-04-13
    • 2013-04-15
    相关资源
    最近更新 更多