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

    colcon build 功能包编译错误

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros2 colcon ros2编译
    2
    6
    285
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • S
      sssgulan
      最后由 编辑

      robo109@robo109:~/ROS(lisence)$ colcon build
      Starting >>> demo_python_pkg
      /usr/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require'
        warnings.warn(msg)
      --- stderr: demo_python_pkg                   
      /usr/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require'
        warnings.warn(msg)
      Traceback (most recent call last):
        File "/home/robo109/ROS(lisence)/demo_python_pkg/setup.py", line 5, in <module>
          setup(
        File "/usr/local/lib/python3.10/dist-packages/setuptools/__init__.py", line 117, in setup
          return distutils.core.setup(**attrs)
        File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 186, in setup
          return run_commands(dist)
        File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 202, in run_commands
          dist.run_commands()
        File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 1002, in run_commands
          self.run_command(cmd)
        File "/usr/local/lib/python3.10/dist-packages/setuptools/dist.py", line 999, in run_command
          super().run_command(command)
        File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 1021, in run_command
          cmd_obj.run()
        File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 312, in run
          self.find_sources()
        File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 320, in find_sources
          mm.run()
        File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 548, in run
          self.prune_file_list()
        File "/usr/local/lib/python3.10/dist-packages/setuptools/command/sdist.py", line 162, in prune_file_list
          super().prune_file_list()
        File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/command/sdist.py", line 386, in prune_file_list
          base_dir = self.distribution.get_fullname()
        File "/usr/local/lib/python3.10/dist-packages/setuptools/_core_metadata.py", line 272, in get_fullname
          return _distribution_fullname(self.get_name(), self.get_version())
        File "/usr/local/lib/python3.10/dist-packages/setuptools/_core_metadata.py", line 290, in _distribution_fullname
          canonicalize_version(version, strip_trailing_zero=False),
      TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'
      ---
      Failed   <<< demo_python_pkg [0.97s, exited with code 1]
      
      Summary: 0 packages finished [1.14s]
        1 package failed: demo_python_pkg
        1 package had stderr output: demo_python_pkg
      

      报错的是这些提示,不知道怎么解决

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

        从你提供的编译错误信息来看,主要问题在于 demo_python_pkg 的 setup.py 文件在尝试使用 setuptools 进行配置时遇到了几个问题。具体来说,问题包括:

        1. Unknown distribution option: 'tests_require' - 这表明 setuptools 不识别 tests_require 这个选项。这通常是因为 setuptools 版本过旧或者某些配置不兼容。

        2. TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero' - 这个错误表明 canonicalize_version 函数调用时传入了一个不被接受的参数 strip_trailing_zero。这通常是由于 setuptools 或 packaging 库的版本问题。

        针对这些问题,你可以尝试以下步骤来解决:

        步骤 1: 更新 setuptools 和 packaging

        确保你的 setuptools 和 packaging 库是最新的,因为旧版本可能不支持一些较新的配置选项或者存在已知的bug。

        pip install --upgrade setuptools packaging
        

        步骤 2: 检查 setup.py

        查看 demo_python_pkg 的 setup.py 文件,特别是与 setup() 函数相关的部分。如果 tests_require 不是一个必要的选项,你可以尝试移除它,或者确认你的 setuptools 版本是否支持它。如果确实需要,考虑使用其他方式来管理测试依赖,比如通过 pytest 的配置文件。

        步骤 3: 清理和重建

        在更新了依赖后,清理旧的构建文件并重新尝试构建:

        cd ~/ROS(lisence)
        rm -rf build install log
        colcon build
        

        步骤 4: 检查 Python 和 ROS 版本兼容性

        确保你使用的 Python 版本与 ROS 版本兼容。ROS Noetic 默认使用 Python 3.8,如果你使用的是 Python 3.10,可能需要额外的配置或考虑降级 Python 版本。

        步骤 5: 查看文档和社区

        如果上述步骤不能解决问题,查看 ROS 和 setuptools 的官方文档,或者在 ROS 社区论坛、Stack Overflow 等平台搜索或提问,可能有其他开发者遇到过类似问题。

        希望这些步骤能帮助你解决问题!如果还有其他问题,欢迎继续提问。


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

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

        S 1 条回复 最后回复 回复 引用 0
        • S
          sssgulan @小伊
          最后由 编辑

          @小伊 不行这些办法都是过了

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

            如果你提到的“这些办法”是指某些解决问题的方法或策略,并且你认为它们已经过时或不再有效,那么寻找新的解决方案就变得尤为重要。以下是一些建议,帮助你应对这种情况:

            1. 分析原因:

              • 深入了解为什么这些办法不再有效。是市场环境发生了变化,还是技术有了更新?
              • 评估这些办法在过去为何能够成功,并找出现在失效的关键因素。
            2. 探索新策略:

              • 研究当前的市场趋势和技术发展,寻找新的解决方案。
              • 与同行或专家交流,了解他们是如何应对类似挑战的。
              • 考虑创新性的方法,如数字化转型、大数据分析等。
            3. 制定计划:

              • 根据新的策略制定详细的实施计划。
              • 设定明确的目标和里程碑,以确保计划的执行。
              • 分配资源,包括人力、物力和财力,以支持新策略的实施。
            4. 持续监控和调整:

              • 在实施新策略的过程中,持续监控其效果。
              • 根据实际情况及时进行调整,以确保策略的有效性。
              • 保持灵活性,随时准备应对不可预见的情况。
            5. 学习和成长:

              • 将这次经历视为一个学习和成长的机会。
              • 分析在实施新策略过程中遇到的挑战和成功,以便在未来更好地应对类似情况。
              • 不断提升自己的知识和技能,以适应不断变化的市场环境。

            总之,当发现旧的方法不再有效时,重要的是要迅速采取行动,探索新的解决方案,并持续监控和调整实施过程。通过不断学习和成长,你将能够更好地应对未来的挑战。


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

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

            S 1 条回复 最后回复 回复 引用 0
            • S
              sssgulan @小伊
              最后由 编辑

              @小伊 ```
              Starting >>> demo_python_pkg
              --- stderr: demo_python_pkg
              Traceback (most recent call last):
              File "/home/robo109/chapt2/demo_python_pkg/setup.py", line 5, in <module>
              setup(
              File "/usr/local/lib/python3.10/dist-packages/setuptools/init.py", line 117, in setup
              return distutils.core.setup(**attrs)
              File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 186, in setup
              return run_commands(dist)
              File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 202, in run_commands
              dist.run_commands()
              File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 1002, in run_commands
              self.run_command(cmd)
              File "/usr/local/lib/python3.10/dist-packages/setuptools/dist.py", line 999, in run_command
              super().run_command(command)
              File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 1021, in run_command
              cmd_obj.run()
              File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 312, in run
              self.find_sources()
              File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 320, in find_sources
              mm.run()
              File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 548, in run
              self.prune_file_list()
              File "/usr/local/lib/python3.10/dist-packages/setuptools/command/sdist.py", line 162, in prune_file_list
              super().prune_file_list()
              File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/command/sdist.py", line 386, in prune_file_list
              base_dir = self.distribution.get_fullname()
              File "/usr/local/lib/python3.10/dist-packages/setuptools/_core_metadata.py", line 272, in get_fullname
              return _distribution_fullname(self.get_name(), self.get_version())
              File "/usr/local/lib/python3.10/dist-packages/setuptools/_core_metadata.py", line 290, in _distribution_fullname
              canonicalize_version(version, strip_trailing_zero=False),
              TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'

              Failed <<< demo_python_pkg [0.76s, exited with code 1]

              Summary: 0 packages finished [0.88s]
              1 package failed: demo_python_pkg
              1 package had stderr output: demo_python_pkg

              
              我把tests_require注释掉了,现在是这个样子
              1 条回复 最后回复 回复 引用 0
              • 小伊小
                机器人小伊
                最后由 编辑

                从错误信息来看,问题出现在 setuptools 库的一个函数 canonicalize_version() 中,这个函数在调用时遇到了一个不期望的关键字参数 strip_trailing_zero。这通常意味着你的 setuptools 版本与其他某个依赖库(可能是 setuptools 自己或其他相关库)之间的不兼容。

                解决步骤

                1. 检查 setuptools 版本:
                  确认你当前安装的 setuptools 版本。有时候,更新或降级 setuptools 可以解决兼容性问题。

                  pip show setuptools
                  

                  如果版本不是最新的,尝试更新它:

                  pip install --upgrade setuptools
                  

                  或者,如果更新后问题依旧,尝试安装一个旧版本的 setuptools:

                  pip install setuptools==<旧版本号>
                  

                  你可以尝试几个不同的旧版本来找到一个兼容的版本。

                2. 检查 setup.py 文件:
                  确认 setup.py 文件中的 setup() 函数调用是否正确。特别是 version 参数,确保它是正确格式化的字符串。例如:

                  setup(
                      name='demo_python_pkg',
                      version='0.1.0',  # 确保版本号是字符串格式
                      # 其他参数...
                  )
                  
                3. 清理环境:
                  有时候,旧的构建文件可能会导致问题。尝试清理你的构建环境:

                  python setup.py clean --all
                  

                  然后再次尝试构建。

                4. 查看依赖库:
                  如果你的项目依赖于其他特定的库,确保这些库也是兼容的。有时候,库的更新会引入不兼容的更改。

                5. 查看错误日志:
                  再次查看完整的错误日志,看看是否有其他线索可以帮助定位问题。

                6. 搜索类似问题:
                  在网上搜索错误消息,看看是否有其他人遇到过类似的问题以及他们是如何解决的。

                如果上述步骤都不能解决问题,你可能需要更详细地检查你的项目依赖或者考虑创建一个最小可复现问题的示例,以便更容易地诊断问题。


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

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

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