ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Best practices for releasing a ROS package with a dependency on a pip package

asked 2020-08-04 09:51:19 -0500

smihael gravatar image

updated 2020-08-04 09:53:44 -0500

I'm trying to release a packagethat depends on pynput, which is resolved to pip by rosdep (

After getting the package included to the distribution.yaml, the test build failed on

It turns out that ROS buildfarm does not support dependencies which are resolved to pip packages by rosdep (

Towards the end of the discussion it is mentioned that a workaround is to package pip dependency/ies as a deb package/s. This is a lengthy process as well, as the packages have to be included to distributions with their own release cycles and policies.

I think this is not a lonely case as there are many python packages listed in, that only resolve to pip (e.g. python-numpy-quaternion-pip, python-numpy-stl-pip, python-objectpath-pip ...).

What are the best practices for releasing such a ROS package? Finding someone to maintain package in Ubuntu and wait until it gets added to their repositories? Generating a deb package and adding it to launchpad or some other service for package building and hosting? Generating a deb package and add it to ROS repository (how)?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2020-08-10 18:06:55 -0500

tfoote gravatar image

updated 2020-08-10 18:07:58 -0500

The best practice is to get the package released upstream as an Debian package that will then get imported into Ubuntu. As you mentioned this is a long process.

Most people using pip only rules understand that they can only use their package from source.

There are ways to bundle pip packages into ROS packages that can then be released. If you do that you're committing to maintaining it. Such as catkin_virtualenv and catkin_pip

An other option is to embed the library inside your package. Make sure to be clear about licensing etc and hide the implementation so it doesn't cause conflcts with potentially other versions.

All of this comes down to that someone has to be willing and able to maintain it for all the use cases.

And note that if there already is a version in the apt repositories you should use that one and not try to override it with a newer version from pip as that has the potential to break many other users.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2020-08-04 09:51:19 -0500

Seen: 360 times

Last updated: Aug 10 '20