鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    AttributeError: 'NoneType' object has no attribute 'keys' 这个咋办阿

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    一键安装失败 ros2
    3
    3
    213
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Y
      y1805243800
      最后由 编辑

      请选择换源方式,如果不知道选什么请选2
      [1]:仅更换系统源
      [2]:更换系统源并清理第三方源
      [0]:quit
      请输入[]内的数字以选择:2
      Run CMD Task:[sudo rm -rf /etc/apt/sources.list]
      [-]Result:success

      删除一个资源文件
      Run CMD Task:[sudo rm -rf /etc/apt/sources.list.d]
      [-]Result:success

      Run CMD Task:[sudo mkdir -p /etc/apt/sources.list.d]
      [-]Result:success

      Run CMD Task:[dpkg --print-architecture]
      [-]Result:success

      检测到当前系统架构为[amd64:noble],正在为你更换对应源..
      创建文件:/etc/apt/sources.list
      替换完成,尝试第一次更新....
      Run CMD Task:[sudo apt update]
      [-]Result:code:100 0 443]security InReleasee

      更新失败,开始更换导入方式并三次尝试...
      Run CMD Task:[sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9]
      []Executing: /tmp/apt-key-gpghome.6THGGNewzO/gpg.1.sh --keyserver keyserver.ubu[-]Result:success

      Run CMD Task:[sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517]
      []Executing: /tmp/apt-key-gpghome.JcwU4HsdQR/gpg.1.sh --keyserver keyserver.ubu[-]Result:success

      Run CMD Task:[sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 54404762BBB6E853]
      []Executing: /tmp/apt-key-gpghome.6AMdbBedaA/gpg.1.sh --keyserver keyserver.ubu[-]Result:success

      Run CMD Task:[sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654]
      []Executing: /tmp/apt-key-gpghome.DxRLm5GlQO/gpg.1.sh --keyserver keyserver.ubu[-]Result:success

      Run CMD Task:[apt-get install debian-keyring debian-archive-keyring]
      [-]Result:code:100 它的软件包引用了。

      Run CMD Task:[apt-key update]
      []gpg: 密钥 3B4FE6ACC0B21F32:“Ubuntu Archive Automatic Signing Key (2012) <ftp[|]gpg: 密钥 D94AA3F0EFE21092:“Ubuntu CD Image Automatic Signing Key (2012) <cd[-]gpg: 密钥 871920D1991BC93C:“Ubuntu Archive Automatic Signing Key (2018) <ftp[-]Result:success

      Run CMD Task:[sudo apt update]
      [-]Result:code:100 0 443]security InReleasee

      如果出现问题NO_PUBKEY XXXXXXXX,请手动运行添加指令:apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXX
      如:error: NO_PUBKEY 0E98404D386FA1D9
      运行指令:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9

      镜像修复完成.....
      Run CMD Task:[sudo apt update]
      [-]Result:code:100 0 443]security InReleasee

      apt更新失败,后续程序可能会继续尝试...,['\n', 'WARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n', '\n', 'E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu noble InRelease” 没有数字签名。\n', 'E: 无法下载 https://mirrors.ustc.edu.cn/ubuntu/dists/noble/InRelease 403 Forbidden [IP: 2001:da8:d800:95::110 443]\n', 'E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu noble-updates InRelease” 没有数字签名。\n', 'E: 无法下载 https://mirrors.ustc.edu.cn/ubuntu/dists/noble-updates/InRelease 403 Forbidden [IP: 2001:da8:d800:95::110 443]\n', 'E: 无法下载 https://mirrors.ustc.edu.cn/ubuntu/dists/noble-backports/InRelease 403 Forbidden [IP: 2001:da8:d800:95::110 443]\n', 'E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu noble-backports InRelease” 没有数字签名。\n', 'E: 无法下载 https://mirrors.ustc.edu.cn/ubuntu/dists/noble-security/InRelease 403 Forbidden [IP: 2001:da8:d800:95::110 443]\n', 'E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu noble-security InRelease” 没有数字签名。\n']
      Run CMD Task:[sudo apt search curl ]
      [-]Result:success 装,本地]enSSL flavour)

      Run CMD Task:[sudo apt install curl -y]
      []升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被[-]Result:success

      Run CMD Task:[sudo apt search gnupg2 ]
      [-]Result:success

      Traceback (most recent call last):
      File "/tmp/fishinstall/install.py", line 124, in <module>
      main()
      File "/tmp/fishinstall/install.py", line 116, in main
      run_tool_file(tools[code]['tool'].replace(url_prefix,'').replace("/","."))
      File "/tmp/fishinstall/tools/base.py", line 1297, in run_tool_file
      if tool.run()==False: return False
      ^^^^^^^^^^
      File "/tmp/fishinstall/tools/tool_install_ros.py", line 393, in run
      self.install_ros()
      File "/tmp/fishinstall/tools/tool_install_ros.py", line 383, in install_ros
      self.add_key()
      File "/tmp/fishinstall/tools/tool_install_ros.py", line 175, in add_key
      AptUtils.install_pkg('gnupg2')
      File "/tmp/fishinstall/tools/base.py", line 1236, in install_pkg
      for key in dic.keys():
      ^^^^^^^^
      AttributeError: 'NoneType' object has no attribute 'keys'

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        这个错误发生的原因是,在install_pkg函数中尝试从一个值为None的对象上调用keys()方法。这通常意味着在之前的某个步骤中,应该返回一个字典(dic)的地方返回了None。

        在你的日志中,install_pkg函数是在尝试安装gnupg2包时调用的,但在调用这个函数之前,它依赖于一个字典dic,这个字典可能是从某个地方获取的,但由于某种原因,它没有被正确初始化或赋值。

        为了解决这个问题,你可以尝试以下步骤:

        1. 检查dic的来源:在base.py文件中找到install_pkg函数,并查看dic变量是从哪里得到的。通常,这个变量可能是在函数调用之前从某个函数或方法中返回的。
        2. 确保dic不是None:在调用dic.keys()之前,添加一个检查来确保dic不是None。如果dic是None,你可能需要回溯并找出为什么它没有被正确赋值。

        例如:

        if dic is not None:
            for key in dic.keys():
                # ... 剩余的代码 ...
        else:
            print("dic is None, unable to continue")
            # 可能需要进一步的错误处理或日志记录
        
        1. 查看日志和代码上下文:仔细查看你的日志和代码上下文,看看是否有任何明显的错误或遗漏。特别是,注意任何可能导致dic变量未被正确设置或返回None的地方。
        2. 检查第三方工具和库:由于这个脚本似乎是在使用第三方工具(如fishinstall)来安装ROS和其他软件包,确保你正在使用的所有工具和库都是最新的,并且与你的操作系统和Python版本兼容。
        3. 搜索类似问题:在网上搜索类似的错误消息和解决方案,看看是否有其他人遇到了类似的问题,并找到了解决方法。
        4. 考虑使用其他方法:如果这个问题持续存在,并且你无法找到解决方案,考虑使用其他方法来安装ROS和所需的软件包。例如,你可以直接使用ROS的官方安装指南,或者使用其他自动化工具(如rosinstall_generator和wstool)。

        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @y1805243800
          最后由 编辑

          @y1805243800 在 AttributeError: 'NoneType' object has no attribute 'keys' 这个咋办阿 中说:

          apt更新失败,后续程序可能会继续尝试...,['\n', 'WARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n', '\n', 'E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu noble InRelease” 没有数字签名。\n', 'E: 无法下载 https://mirrors.ustc.edu.cn/ubuntu/dists/noble/InRelease 403 Forbidden [IP: 2001:da8:d800:95::110 443]\n', 'E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu noble-updates InRelease” 没有数字签名。\n', 'E: 无法下载 https://mirrors.ustc.edu.cn/ubuntu/dists/noble-updates/InRelease 403 Forbidden [IP: 2001:da8:d800:95::110 443]\n', 'E: 无法下载 https://mirrors.ustc.edu.cn/ubuntu/dists/noble-backports/InRelease 403 Forbidden [IP: 2001:da8:d800:95::110 443]\n', 'E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu noble-backports InRelease” 没有数字签名。\n', 'E: 无法下载 https://mirrors.ustc.edu.cn/ubuntu/dists/noble-security/InRelease 403 Forbidden [IP: 2001:da8:d800:95::110 443]\n', 'E: 仓库 “https://mirrors.ustc.edu.cn/ubuntu noble-security InRelease” 没有数字签名。\n']

          和这个有关系,建议手动更换系统源,然后用一键安装,选择不更换系统源安装ROS

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          1 条回复 最后回复 回复 引用 0
          • 第一个帖子
            最后一个帖子
          皖ICP备16016415号-7
          Powered by NodeBB | 鱼香ROS