Skip to content

使用 Python 包

目标: 说明如何与 ROS 2 生态系统中的其他 Python 包进行互操作。

注意: 需要特别提醒的是,如果打算使用预编译的二进制包(无论是 deb 文件还是二进制归档发行版),Python 解释器必须与构建原始二进制文件时使用的解释器一致。如果打算使用 virtualenv 或 pipenv 之类的工具,请确保使用系统解释器。如果使用 conda 之类的工具,解释器很可能与系统解释器不匹配,从而与 ROS 2 二进制文件不兼容。

引入第三方 Python 包最快的方式是使用它们对应的 rosdep key(如果可用的话)。rosdep key 可通过以下链接查询:

这些 rosdep key 可以添加到 package.xml 文件中,以此向构建系统表明你的包(及其依赖包)依赖于这些 key。在一个新的工作空间中,还可以通过以下命令快速安装所有 rosdep key:

Terminal window
$ rosdep install -yr --from-paths ./path/to/your/workspace

如果所需的包目前还没有 rosdep key,可以按照 rosdep key 贡献指南 来添加。

要了解更多关于 rosdep 工具及其工作原理的信息,请参阅 rosdep 文档。

如果不想创建 rosdep key,但该包在系统包管理器(例如 apt)中可用,也可以通过这种方式安装并使用:

Terminal window
$ sudo apt install python3-serial

如果该包在 Python Package Index (PyPI) 上可用,且需要在系统范围内安装:

Terminal window
$ python3 -m pip install -U pyserial

如果该包在 PyPI 上可用,且只需安装到当前用户目录:

Terminal window
$ python3 -m pip install -U --user pyserial

首先,创建一个 Colcon 工作空间:

Terminal window
$ mkdir -p ~/colcon_venv/src
$ cd ~/colcon_venv/

然后配置虚拟环境:

Terminal window
$ virtualenv -p python3 ./venv # Make a virtual env and activate it
$ source ./venv/bin/activate
$ touch ./venv/COLCON_IGNORE # Make sure that colcon does not try to build the venv

接下来,在虚拟环境中安装所需的 Python 包:

Terminal window
$ python3 -m pip install gtsam pyserial… etc

现在可以构建工作空间,并运行依赖虚拟环境中已安装包的 Python 节点。

Terminal window
$ source /opt/ros/{DISTRO}/setup.bash # Source {DISTRO_TITLE} and build
$ colcon build

注意: 如果想使用 Bloom 发布包,应将所需的包添加到 rosdep 中,请参阅 rosdep key 贡献指南。