ROS2用jupyter时在import rclpy时的报错
-
ImportError Traceback (most recent call last)
Cell In[1], line 1
----> 1 import rclpy
2 from rclpy.node import NodeFile /opt/ros/jazzy/lib/python3.12/site-packages/rclpy/init.py:49
47 from rclpy.context import Context
48 from rclpy.parameter import Parameter
---> 49 from rclpy.signals import install_signal_handlers
50 from rclpy.signals import SignalHandlerOptions
51 from rclpy.signals import uninstall_signal_handlersFile /opt/ros/jazzy/lib/python3.12/site-packages/rclpy/signals.py:15
1 # Copyright 2019 Open Source Robotics Foundation, Inc.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
(...)
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
---> 15 from rclpy.exceptions import InvalidHandle
16 from rclpy.guard_condition import GuardCondition
17 from rclpy.impl.implementation_singleton import rclpy_implementation as _rclpyFile /opt/ros/jazzy/lib/python3.12/site-packages/rclpy/exceptions.py:16
...
89 level += 1
---> 90 return _bootstrap._gcd_import(name[level:], package, level)ImportError: /home/huang/miniconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/ros/jazzy/lib/python3.12/site-packages/rclpy/_rclpy_pybind11.cpython-312-aarch64-linux-gnu.so)
The C extension '/opt/ros/jazzy/lib/python3.12/site-packages/rclpy/_rclpy_pybind11.cpython-312-aarch64-linux-gnu.so' failed to be imported while being present on the system. Please refer to 'https://docs.ros.org/en/jazzy/How-To-Guides/Installation-Troubleshooting.html#import-failing-even-with-library-present-on-the-system' for possible solutions
Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...因为我用的时vscode中的jupyter编辑,当我输入import rclpy和from rclpy.node import Node点击Ctrl + ENTER运行后便报错如上,我的设备用的是树莓派5,内置ubuntu24.04LTS,装的是ROS2的noble,花了好久在网上搜索相关资料,我看了系统里也有GLIBCXX_3.4.30,至今无法解决,有没有遇到相同情况的铁铁分享一下资料!万分感谢!
-
错误信息提示
/home/huang/miniconda3/bin/../lib/libstdc++.so.6: version 'GLIBCXX_3.4.30' not found
,这表明你的Python环境(很可能是Miniconda环境)中的libstdc++
库版本与ROS 2中rclpy
所需的版本不兼容。树莓派上的Ubuntu 24.04 LTS默认提供的
libstdc++
库可能并不包括GLIBCXX_3.4.30
这个版本,而这个版本是编译ROS 2中某些组件(比如rclpy
)时需要的。这里有几个可能的解决步骤:
-
确保ROS 2环境正确设置:
确保你已经按照ROS 2的官方安装指南正确安装了ROS 2,并且你的环境变量(如PATH
和LD_LIBRARY_PATH
)已经设置正确,以便它们指向了ROS 2的安装目录。 -
使用系统Python而非Miniconda:
你可能需要避免在Miniconda环境中运行ROS 2相关的代码,因为Miniconda可能会提供自己的libstdc++
版本,这个版本可能与ROS 2不兼容。尝试使用系统Python环境运行你的代码。 -
更新或安装缺失的
libstdc++
版本:
如果可能,尝试更新你的libstdc++
库到一个包含GLIBCXX_3.4.30
的版本。你可以通过添加更多的PPA或者从源代码编译GCC来做到这一点。 -
使用虚拟环境:
如果你需要使用特定的Python包或版本,你可以考虑使用venv
或pyenv
来创建一个干净的虚拟环境,并在这个环境中安装ROS 2的Python包。 -
检查Jupyter配置:
确保Jupyter是在正确的Python环境中启动的,这个环境应该与ROS 2兼容。你可能需要在Jupyter的kernel配置中指定正确的Python解释器。 -
检查ROS 2版本:
确保你安装的ROS 2版本(你提到的是noble
)与你的树莓派和Ubuntu版本兼容。如果noble
是针对更高版本的Ubuntu或者不同的硬件架构编译的,那么它可能不兼容。 -
查看ROS社区和论坛:
ROS社区和论坛中可能有人遇到了类似的问题,并分享了解决方案。查看这些资源可能会提供额外的帮助。
由于这涉及到具体的系统配置和环境设置,可能需要一些试验和调整才能找到最适合你情况的解决方案。如果以上步骤都不能解决问题,你可能需要更详细地检查你的系统配置,或者考虑在支持ROS 2的官方硬件和操作系统上部署你的项目。
以上为生成回答,仅供参考~
-
-