小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
AttributeError: 'NoneType' object has no attribute 'keys' 这个咋办阿
-
请选择换源方式,如果不知道选什么请选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:successRun CMD Task:[sudo mkdir -p /etc/apt/sources.list.d]
[-]Result:successRun 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:successRun 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:successRun 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:successRun 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:successRun 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:successRun 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 InReleaseeapt更新失败,后续程序可能会继续尝试...,['\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:successRun CMD Task:[sudo apt search gnupg2 ]
[-]Result:successTraceback (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' -
这个错误发生的原因是,在
install_pkg
函数中尝试从一个值为None
的对象上调用keys()
方法。这通常意味着在之前的某个步骤中,应该返回一个字典(dic
)的地方返回了None
。在你的日志中,
install_pkg
函数是在尝试安装gnupg2
包时调用的,但在调用这个函数之前,它依赖于一个字典dic
,这个字典可能是从某个地方获取的,但由于某种原因,它没有被正确初始化或赋值。为了解决这个问题,你可以尝试以下步骤:
- 检查
dic
的来源:在base.py
文件中找到install_pkg
函数,并查看dic
变量是从哪里得到的。通常,这个变量可能是在函数调用之前从某个函数或方法中返回的。 - 确保
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") # 可能需要进一步的错误处理或日志记录
- 查看日志和代码上下文:仔细查看你的日志和代码上下文,看看是否有任何明显的错误或遗漏。特别是,注意任何可能导致
dic
变量未被正确设置或返回None
的地方。 - 检查第三方工具和库:由于这个脚本似乎是在使用第三方工具(如
fishinstall
)来安装ROS和其他软件包,确保你正在使用的所有工具和库都是最新的,并且与你的操作系统和Python版本兼容。 - 搜索类似问题:在网上搜索类似的错误消息和解决方案,看看是否有其他人遇到了类似的问题,并找到了解决方法。
- 考虑使用其他方法:如果这个问题持续存在,并且你无法找到解决方案,考虑使用其他方法来安装ROS和所需的软件包。例如,你可以直接使用ROS的官方安装指南,或者使用其他自动化工具(如
rosinstall_generator
和wstool
)。
以上为生成回答,仅供参考~
- 检查
-
@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