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

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

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

      [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
                                          • 小鱼小 小鱼 在 中 引用了 这个主题
                                          • 29295209792
                                            孑 @554553422
                                            最后由 编辑

                                            @554553422 真的有用感谢大佬

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