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

    jupyter新建python3文件终端报错,导入rclpy报错

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    ros2 jupyternotebook rclpypybind11
    11
    25
    4.5k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 一只活跃的新手一
      新手而已
      最后由 编辑

      059ef741-448c-4eb0-992c-c9989256167d-image.png
      4d089cff-9565-43c4-a6e9-033285d1419c-image.png
      报错代码如下

      1 条回复 最后回复 回复 引用 0
      • 一只活跃的新手一
        新手而已
        最后由 一只活跃的新手 编辑

        [IPKernelApp] ERROR | No such comm target registered: jupyter.widget.control
        [IPKernelApp] WARNING | No such comm: 0b0937b6-197d-4bb2-b693-66346bfd229e
        
        
        ModuleNotFoundError: No module named 'rclpy._rclpy_pybind11'
        The C extension '/opt/ros/humble/lib/python3.10/site-packages/_rclpy_pybind11.cpython-38-x86_64-linux-gnu.so' isn't present on the system. Please refer to 'https://docs.ros.org/en/humble/Guides/Installation-Troubleshooting.html#import-failing-without-library-present-on-the-system' for possible solutions
        

        求大佬帮忙看下问题出在哪里,都是按照教程一步步来的

        小鱼小 1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @一只活跃的新手
          最后由 编辑

          @一只活跃的新手 尝试在启动jupyter的终端输入,python
          接着输入下面的语句试试

          import  rclpy
          

          如果还不行,试试终极解决方案,导出路径后再启动jupyter

          https://fishros.com/d2lros2/#/humble/chapt2/basic/5.Python依赖查找流程

          5.Python依赖查找流程(文章来源动手学ROS2)

          python的打包和引入依赖的方式相比C++要容易太多。本节小鱼带你来通过几个实例学习下Python的路径查找机制。

          1.编写ROS2的Python节点

          在d2lros2/d2lros2/chapt2/basic新建second_ros2_node.py,输入下面的内容

          # 导入rclpy库,如果Vscode显示红色的波浪线也没关系
          # 我们只是把VsCode当记事本而已,谁会在意记事本对代码的看法呢,不是吗?
          import rclpy
          from rclpy.node import Node
          # 调用rclcpp的初始化函数
          rclpy.init() 
          # 调用rclcpp的循环运行我们创建的second_node节点
          rclpy.spin(Node("second_node"))
          

          2.运行Python节点

          打开终端,输入指令

          ls
          python3 second_ros2_node.py
          

          打开新的终端,输入

          ros2 node list
          

          image-20220603154952746

          完美,四行代码写了个ROS2的Python节点。

          那么问题来了,我们import rclpy,rclpy到底在哪里?python是如何找到的?

          3.Python包查找流程

          Python3运行import rclpy时候如何找到它的呢?答案是通过环境变量PYTHONPATH

          Ctrl+C打断节点运行,接着输入下面指令

          echo $PYTHONPATH
          

          结果

          /opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages
          

          你会发现里面有关于humble的python路径,在上面两个目录下找一下rclpy,看看能不能找到rclpy

          查找第一个路径

          ls -l /opt/ros/humble/lib/python3.10/site-packages | grep rclpy
          

          没找到,第二个

          ls -l /opt/ros/humble/local/lib/python3.10/dist-packages/ | grep rclpy
          

          找到了

          drwxr-xr-x 1 root root 4096 Jun  3 04:45 rclpy
          drwxr-xr-x 2 root root 4096 May 23 22:23 rclpy-3.3.4-py3.10.egg-info
          

          4.unset实验

          使用unset指令可以将环境变量删除掉,尝试删除掉PYTHONPATH之后再运行代码,看看是否还可以导入rclpy。

          unset
          python3 second_ros2_node.py
          

          提示如下

          root@490925f19143:~/d2lros2/d2lros2/chapt2/basic# python3 second_ros2_node.py 
          Traceback (most recent call last):
            File "/root/d2lros2/d2lros2/chapt2/basic/second_ros2_node.py", line 3, in <module>
              import rclpy
          ModuleNotFoundError: No module named 'rclpy'
          

          请你记住这个报错信息ModuleNotFoundError: No module named 'xxx',这也是你未来学习过程中可能会经常会遇到的。

          下次遇到时,你会想起小鱼这篇文章,然后对它轻蔑的一笑,接着找到这个库所在的目录,把它加到环境里。

          5.总结

          本节小鱼带你学习了Python编写ROS2节点的方式,并带你认识了一个常见的错误ModuleNotFoundError: No module named 'xxx'。

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

          一只活跃的新手一 1 条回复 最后回复 回复 引用 0
          • 一只活跃的新手一
            新手而已 @小鱼
            最后由 编辑

            @小鱼 鱼哥,在终端输入python,然后import会报错

            ModuleNotFoundError: No module named ‘rclpy._rclpy_pybind11’
            
            小鱼小 1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @一只活跃的新手
              最后由 编辑

              @一只活跃的新手 不好意思,我貌似忽略了什么,请告诉我你的系统版本,ROS2版本,以及你看的教程,我猜因为教程是foxy版本造成的版本差异.
              如果你是在学习动手学机器人学,我推荐的解决方案是卸载conda,接着直接在vscode里安装jupyter插件,就可以愉快的在vscode里继续学习了.

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

              一只活跃的新手一 1 条回复 最后回复 回复 引用 2
              • 一只活跃的新手一
                新手而已 @小鱼
                最后由 一只活跃的新手 编辑

                @小鱼 用的动手学ros2教程https://fishros.com/d2lros2/#/,ros2,python版本是跟着教程一键安装的
                这个教程前面都是用的vscode,是不是后面的内容还是foxy版本的没更新呀

                小鱼小 2 条回复 最后回复 回复 引用 0
                • 小鱼小
                  小鱼 技术大佬 @一只活跃的新手
                  最后由 小鱼 编辑

                  @一只活跃的新手 这是我的错,你输入python --version检查下你的miniconda中python的版本,如果没猜错应该不是3.10,ros2用的版本是3.10的python,两者有一些差异。

                  如果可以证实,你可以通过下面这句话关闭miniconda

                  conda config --set auto_activate_base false
                  

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

                  SueS 1 条回复 最后回复 回复 引用 0
                  • 小鱼小
                    小鱼 技术大佬 @一只活跃的新手
                    最后由 编辑

                    @一只活跃的新手 机器人学部分用了foxy部分的教程,个别操作没有更新.

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

                    一只活跃的新手一 1 条回复 最后回复 回复 引用 0
                    • 一只活跃的新手一
                      新手而已 @小鱼
                      最后由 编辑

                      @小鱼 ok,多谢鱼哥啦,我去装插件试一试

                      1 条回复 最后回复 回复 引用 0
                      • 一只活跃的新手一 一只活跃的新手 将这个主题标记为已解决,在
                      • SueS
                        Sue @小鱼
                        最后由 编辑

                        @小鱼 鱼哥你好,我也是跟着动手学机器人学的,我也是遇到了无法import rclpy的问题,但我自己创建了一个conda python3.10的虚拟环境,但是也不行,您觉得还能用啥操作修复一下吗,还是说像您建议那样在vscode上学?

                        SueS 小鱼小 2 条回复 最后回复 回复 引用 0
                        • SueS
                          Sue
                          最后由 编辑

                          此回复已被删除!
                          1 条回复 最后回复 回复 引用 0
                          • SueS
                            Sue @Sue
                            最后由 编辑

                            @小鱼 这是我的报错

                            ImportError: /home/sue/miniconda3/envs/sjr/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so)
                            The C extension '/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so' failed to be imported while being present on the system. Please refer to 'https://docs.ros.org/en/{distro}/Guides/Installation-Troubleshooting.html#import-failing-even-with-library-present-on-the-system' for possible solutions

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

                              @Sue 建议vscode

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

                              1 条回复 最后回复 回复 引用 0
                              • 35199285583
                                旺仔牛奶巧克力味
                                最后由 编辑

                                fc08f9e5-d82f-4086-aaf9-1cefbd9f4526-image.png ca308bbd-ffc7-4c6a-b486-ec8486b1e689-image.png
                                这是我的报错

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

                                  @3519928558

                                  @小鱼 在 jupyter新建python3文件终端报错,导入rclpy报错 中说:

                                  不好意思,我貌似忽略了什么,请告诉我你的系统版本,ROS2版本,以及你看的教程,我猜因为教程是foxy版本造成的版本差异.
                                  如果你是在学习动手学机器人学,我推荐的解决方案是卸载conda,接着直接在vscode里安装jupyter插件,就可以愉快的在vscode里继续学习了.

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

                                  24241020042 1 条回复 最后回复 回复 引用 0
                                  • 24241020042
                                    是我不配→_→ @小鱼
                                    最后由 编辑

                                    @小鱼 您好,我和上面33519928558那位博主的报错问题一模一样,
                                    ubuntu版本:Ubuntu 22.04.1 LTS
                                    ROS2版本:humble
                                    学习的网站:https://fishros.com/d2lros2/#/humble/
                                    请问鱼哥,我也是卸载miniconda,在vscode里面安装jupyter插件么?

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

                                      @2424102004 对的

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

                                      24241020042 1 条回复 最后回复 回复 引用 0
                                      • 24241020042
                                        是我不配→_→ @小鱼
                                        最后由 编辑

                                        @小鱼 好的,感谢鱼哥

                                        1 条回复 最后回复 回复 引用 0
                                        • 5545534225
                                          David
                                          最后由 编辑

                                          import rclpy的时候出现 "libstdc++.so.6: version `GLIBCXX_3.4.30' not found"

                                          可以在base环境中试一下 conda install -c conda-forge gcc=12.1.0

                                          亲测有效👍

                                          28634977052 29295209792 K 3 条回复 最后回复 回复 引用 1
                                          • 28634977052
                                            2863497705 @554553422
                                            最后由 编辑

                                            @554553422 确实,刚问了bing也这么回复的

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