【问题标题】:ROS melodic installation with Python 3 only and without messing up system libraries?仅使用 Python 3 安装 ROS 旋律且不会弄乱系统库?
【发布时间】:2020-06-11 22:46:34
【问题描述】:

流程及问题说明:

我正在按照那里的安装指南进行操作:
http://wiki.ros.org/melodic/Installation/Ubuntu

但是:

  1. $ sudo apt-get install ros-melodic-desktop-full 不起作用:

    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:
    
    The following packages have unmet dependencies:
     ros-melodic-desktop-full : Depends: ros-melodic-perception but it is not going to be installed    
    E: Unable to correct problems, you have held broken packages.    
    

    -> 问题 1.

  2. $ sudo apt-get install ros-melodic-desktop-full 似乎可以工作,但它需要安装一大堆软件包(602 MB)——我有点期待。在详细查看这些包时,我可以看到:

    • 超过 190 个 ros-something-packages:好的

    • 一些新库:好的

    • 超过 40 个python-<packages>(绝对是 Python 2 包):-> 问题 2.1

    • 超过80个libboost-<something-system-libraries>:->问题2.2

相关问题:

问题一:

你知道为什么吗?

问题 2.1:

如何强制使用这些包的 Python 3 版本?

问题2.2:

出于其他目的,我从来源 (Building Boost from sources on Linux) 构建提升。
因此,我担心如果我安装了所有这些依赖项的 ros,ros 附带的 boost 系统库(它们都是 boost 版本 1.65)会弄乱我对 boost 的个性化安装库(版本为 1.68),尤其是当我想编译其他软件时(我更喜欢只有这些库的一个版本;即最新的 1.68)。
有没有办法告诉ros 使用这些已经安装的库(基本上在/usr/local/)?

一般信息:

我使用的是 Ubuntu 18.04:4.15.0-43-generic x86_64 GNU/Linux Python 3 版本为:3.6.7

【问题讨论】:

    标签: ubuntu boost ros


    【解决方案1】:

    为了使 ROS 系统正常工作,它需要最低特定版本的依赖项。

    您不能在安装中使用 python 3,因为所有工具都是使用 python 2.7+ 制作的,但是您可以通过将 ROS_PYTHON_VERSION 更改为 3 来指定运行或编译包时要使用的 python 版本。

    我认为您可以使用 This Answer 将编译后的源代码转换为 .deb 文件并安装它以防止 apt 干扰您的 boost 库

    【讨论】:

    • python 2 将“很快”被弃用; pythonclock.org。是时候升级恕我直言了。
    • 能否像在虚拟环境中一样“隔离”ros生态系统?
    • @s.k 我认为像 virtualenv 这样的隔离是不可能的,因为 ROS 使用的是 apt 包管理器,而不是 pip。但是您可以做的(安装 ROS 的硬方法)是从基础编译所有内容,这样您就可以使用自己的 boost-Lib 并使用您选择的 python 版本。我从未尝试过自己,但您可以查看他们的 wiki
    • 或者可能是一个 docker 映像,其中 ros 包可以根据需要“即时”安装,例如 open_cv 或其他......但不幸的是我不习惯 docker。跨度>
    • 确实 docker 也可以工作,但是如果你的节点变得复杂或者你需要连接多个系统,你可能会遇到问题
    【解决方案2】:

    如果你使用 Anaconda 试试这个

    conda create -n ros python=3.7

    conda activate ros

    pip install rospy rospkg

    这对我有用。 只需以类似的方式安装任何其他软件包 pip install package-name

    【讨论】:

    • 嗨 Suraj,感谢您的贡献!您能否为您的答案添加一些解释? OP 似乎对理解原因特别感兴趣,未来的读者可能会发现它很有用。谢谢你,继续stackoverflow!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多