ros-humble
ros-humble copied to clipboard
Python 3.8 compatibility with ROS2 humble robostack
Solution to issue cannot be found in the documentation.
- [X] I checked the documentation.
Issue
I expect ROS2 humble to be compatible with python 3.8. Yet when I follow the instructions to install Robostack on a mamba env with python 3.8, mamba could not solve for environment specs and asks for python 3.10. I require python 3.8 for other python libraries to function on an nvidia jetson orin (I am aware that nvidia offers docker containers for ros, but honestly Robostack has worked very well for me so far when mamba env with python=3.10 was used).
Platfrom: Nvidia Jetson Orin dev board, Jetpack 5.1.2 (Ubuntu 20.04)
Issue: after adding all the necessary channels to the environment, running
mamba install ros-humble-desktop
on a mamba 1.4.2 environment with python=3.8.17 installed, returns the following:
Could not solve for environment specs
The following package could not be installed
└─ ros-humble-desktop is installable and it requires
├─ python_abi 3.10.* *_cp310 with the potential options
│ ├─ python_abi 3.10, which can be installed;
│ └─ python_abi 3.10 would require
│ └─ python 3.10.* , which can be installed;
└─ ros2-distro-mutex [0.2.* humble|0.3.* ], which requires
└─ setuptools 61.0.0* , which can be installed.
Expected result: backwards compatibility of ros-humble-desktop in mamba, at least to python 3.8.
Thanks a lot in advance!
Installed packages
_openmp_mutex 4.5 2_gnu conda-forge
aiofiles 23.2.1 pypi_0 pypi
aiohttp 3.8.5 pypi_0 pypi
aiosignal 1.3.1 pypi_0 pypi
altair 5.0.1 pypi_0 pypi
annotated-types 0.5.0 pypi_0 pypi
anyio 3.7.1 pypi_0 pypi
asttokens 2.2.1 pypi_0 pypi
async-timeout 4.0.3 pypi_0 pypi
attrs 23.1.0 pypi_0 pypi
backcall 0.2.0 pypi_0 pypi
bzip2 1.0.8 hf897c2e_4 conda-forge
ca-certificates 2023.7.22 hcefe29a_0 conda-forge
certifi 2023.7.22 pypi_0 pypi
charset-normalizer 3.2.0 pypi_0 pypi
click 8.1.7 pypi_0 pypi
clip 1.0 pypi_0 pypi
comm 0.1.4 pypi_0 pypi
contourpy 1.1.0 pypi_0 pypi
cycler 0.11.0 pypi_0 pypi
debugpy 1.6.7.post1 pypi_0 pypi
decorator 5.1.1 pypi_0 pypi
executing 1.2.0 pypi_0 pypi
fastapi 0.101.1 pypi_0 pypi
ffmpy 0.3.1 pypi_0 pypi
filelock 3.12.2 pypi_0 pypi
fonttools 4.42.1 pypi_0 pypi
frozenlist 1.4.0 pypi_0 pypi
fsspec 2023.6.0 pypi_0 pypi
ftfy 6.1.1 pypi_0 pypi
gradio 3.35.2 pypi_0 pypi
gradio-client 0.5.0 pypi_0 pypi
h11 0.14.0 pypi_0 pypi
httpcore 0.17.3 pypi_0 pypi
httpx 0.24.1 pypi_0 pypi
huggingface-hub 0.16.4 pypi_0 pypi
idna 3.4 pypi_0 pypi
importlib-metadata 6.8.0 pypi_0 pypi
importlib-resources 6.0.1 pypi_0 pypi
ipykernel 6.25.1 pypi_0 pypi
ipython 8.12.2 pypi_0 pypi
jedi 0.19.0 pypi_0 pypi
jinja2 3.1.2 pypi_0 pypi
jsonschema 4.19.0 pypi_0 pypi
jsonschema-specifications 2023.7.1 pypi_0 pypi
jupyter-client 8.3.0 pypi_0 pypi
jupyter-core 5.3.1 pypi_0 pypi
kiwisolver 1.4.5 pypi_0 pypi
ld_impl_linux-aarch64 2.40 h2d8c526_0 conda-forge
libffi 3.4.2 h3557bc0_5 conda-forge
libgcc-ng 13.1.0 h2b4548d_0 conda-forge
libgomp 13.1.0 h2b4548d_0 conda-forge
libnsl 2.0.0 hf897c2e_0 conda-forge
libsqlite 3.43.0 h194ca79_0 conda-forge
libuuid 2.38.1 hb4cce97_0 conda-forge
libzlib 1.2.13 h31becfc_5 conda-forge
linkify-it-py 2.0.2 pypi_0 pypi
markdown-it-py 2.2.0 pypi_0 pypi
markupsafe 2.1.3 pypi_0 pypi
matplotlib 3.7.2 pypi_0 pypi
matplotlib-inline 0.1.6 pypi_0 pypi
mdit-py-plugins 0.3.3 pypi_0 pypi
mdurl 0.1.2 pypi_0 pypi
mpmath 1.3.0 pypi_0 pypi
multidict 6.0.4 pypi_0 pypi
ncurses 6.4 h2e1726e_0 conda-forge
nest-asyncio 1.5.7 pypi_0 pypi
networkx 3.1 pypi_0 pypi
numpy 1.24.4 pypi_0 pypi
opencv-python 4.8.0.76 pypi_0 pypi
openssl 3.1.2 h31becfc_0 conda-forge
orjson 3.9.5 pypi_0 pypi
packaging 23.1 pypi_0 pypi
pandas 2.0.3 pypi_0 pypi
parso 0.8.3 pypi_0 pypi
pexpect 4.8.0 pypi_0 pypi
pickleshare 0.7.5 pypi_0 pypi
pillow 10.0.0 pypi_0 pypi
pip 23.2.1 pyhd8ed1ab_0 conda-forge
pkgutil-resolve-name 1.3.10 pypi_0 pypi
platformdirs 3.10.0 pypi_0 pypi
pluggy 1.2.0 pypi_0 pypi
prompt-toolkit 3.0.39 pypi_0 pypi
protobuf 4.24.1 pypi_0 pypi
psutil 5.9.5 pypi_0 pypi
ptyprocess 0.7.0 pypi_0 pypi
pure-eval 0.2.2 pypi_0 pypi
pydantic 2.3.0 pypi_0 pypi
pydantic-core 2.6.3 pypi_0 pypi
pydub 0.25.1 pypi_0 pypi
pygments 2.16.1 pypi_0 pypi
pyparsing 3.0.9 pypi_0 pypi
python 3.8.17 ha43d526_0_cpython conda-forge
python-dateutil 2.8.2 pypi_0 pypi
python-multipart 0.0.6 pypi_0 pypi
pytz 2023.3 pypi_0 pypi
pyyaml 6.0.1 pypi_0 pypi
pyzmq 25.1.1 pypi_0 pypi
readline 8.2 h8fc344f_1 conda-forge
referencing 0.30.2 pypi_0 pypi
regex 2023.8.8 pypi_0 pypi
requests 2.31.0 pypi_0 pypi
rpds-py 0.9.2 pypi_0 pypi
scipy 1.10.1 pypi_0 pypi
seaborn 0.12.2 pypi_0 pypi
segment-anything 1.0 pypi_0 pypi
semantic-version 2.10.0 pypi_0 pypi
setuptools 68.1.2 pyhd8ed1ab_0 conda-forge
six 1.16.0 pypi_0 pypi
sniffio 1.3.0 pypi_0 pypi
stack-data 0.6.2 pypi_0 pypi
starlette 0.27.0 pypi_0 pypi
sympy 1.12 pypi_0 pypi
tk 8.6.12 hd8af866_0 conda-forge
toolz 0.12.0 pypi_0 pypi
torch 2.0.0+nv23.5 pypi_0 pypi
torchvision 0.14.0 pypi_0 pypi
tornado 6.3.3 pypi_0 pypi
tqdm 4.66.1 pypi_0 pypi
traitlets 5.9.0 pypi_0 pypi
typing-extensions 4.7.1 pypi_0 pypi
tzdata 2023.3 pypi_0 pypi
uc-micro-py 1.0.2 pypi_0 pypi
ultralytics 8.0.120 pypi_0 pypi
urllib3 2.0.4 pypi_0 pypi
uvicorn 0.23.2 pypi_0 pypi
wcwidth 0.2.6 pypi_0 pypi
websockets 11.0.3 pypi_0 pypi
wheel 0.41.2 pyhd8ed1ab_0 conda-forge
xz 5.2.6 h9cdd2b7_0 conda-forge
yarl 1.9.2 pypi_0 pypi
zipp 3.16.2 pypi_0 pypi
Environment info
active environment : ros2_env
active env location : <home>/mambaforge/envs/ros2_env
shell level : 2
user config file : <home>/.condarc
populated config files : <home>/mambaforge/.condarc
<home>/mambaforge/envs/ros2_env/.condarc
conda version : 23.3.1
conda-build version : not installed
python version : 3.10.12.final.0
virtual packages : __archspec=1=aarch64
__cuda=11.4=0
__glibc=2.31=0
__linux=5.10.104=0
__unix=0=0
base environment : <home>/mambaforge (writable)
conda av data dir : <home>/mambaforge/etc/conda
conda av metadata url : None
channel URLs : https://conda.anaconda.org/robostack-staging/linux-aarch64
https://conda.anaconda.org/robostack-staging/noarch
https://conda.anaconda.org/conda-forge/linux-aarch64
https://conda.anaconda.org/conda-forge/noarch
package cache : <home>/mambaforge/pkgs
<home>/.conda/pkgs
envs directories : <home>/mambaforge/envs
<home>/.conda/envs
platform : linux-aarch64
user-agent : conda/23.3.1 requests/2.31.0 CPython/3.10.12 Linux/5.10.104-tegra ubuntu/20.04.6 glibc/2.31
UID:GID : 1000:1000
netrc file : None
offline mode : False
At the moment, we build for a single version of Python for each distribution to keep the mantainance burden managiable. It was Python 3.9 before https://github.com/RoboStack/ros-humble/pull/21, and now it is Python 3.10 . See also https://github.com/RoboStack/ros-noetic/issues/386#issuecomment-1695530200 for a similar issue with ROS Noetic.
Thanks for the prompt reply - I see. Given the almost simultaneous request from https://github.com/RoboStack/ros-noetic/issues/386#issuecomment-1695530200 are there plans for backwards compatibility for the ros versions on robostack to at least python 3.8? I understand it is a lot of work but certainly many robotics-relevant e.g. computer vision, ML python packages share compatibility to latest python 3.8 so I am sure many will find this useful. A big appeal of robostack has been that we didn't have to mess around with e.g. docker to get LTS ros2 humble working, so would be a critical differentiating feature/unique selling point of robostack if enabled.
In the meantime, do you have any suggested workarounds? E.g. having two mamba environments one with python3.10 + robostack and one with python3.8 + my other dependencies will probably struggle to work.
Hi @hanschanhs, great to see you are interested in RoboStack and giving it a go :).
Unfortunately, as @traversaro said above, the maintenance burden is too high for us to support multiple Python versions (the build time multiplies by the number of Python versions).
That said, there are multiple ways to potentially achieve what you like:
- You could build RoboStack for a particular Python locally. This should be quite straightforward, see our contribution guide. In fact, our users have done this for Python 3.11 (ROS noetic, see https://github.com/RoboStack/ros-noetic/issues/339).
- You could help us bring the computer vision / ML packages that are still missing to conda-forge, which supports python 3.9 (and underlies RoboStack). We are happy to help out to get you started; the RoboStack team probably maintains >100 packages in robotics/ML/CV. Let us know which particular packages require Python 3.8.
- If you work for a company, you could ask them to sponsor RoboStack. If we had money for more powerful CI, we could support multiple Python versions.