On Ubuntu 22.04, packages are usually installed at /usr/lib/python3.12. This allows for packages to access them. However, ROS 2 Jazzy runs natively on Ubuntu 24.04 (Noble Numbat), it strictly enforces [PEP 668 (Marking Python base environments as "externally managed")](https://peps.python.org/pep-0668/)
This results in packages unable to locate these dependencies and break (mostly vision and filters). An approach to use “break-system-packages” is suggested on an [OpenRobotics forum](https://discourse.openrobotics.org/t/rosdep-for-pip-is-broken-on-jazzy/38981).
Behavior: Packages can't be accessed at runtime. When run pip freeze can see that package is installed
When trying to reinstall package, can see that package is already installed in /opt/venv/ instead of /usr/lib/
admin@tuanpham-LOQ-15IAX9E:/workspaces/isaac_ros-dev$ pip install mavsdk
WARNING: The directory '/home/admin/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.
Defaulting to user installation because normal site-packages is not writeable
WARNING: Skipping /usr/lib/python3.12/dist-packages/pybind11-2.11.1.dist-info due to invalid metadata entry 'name'
Requirement already satisfied: mavsdk in /opt/venv/lib/python3.12/site-packages (3.17.2)
Requirement already satisfied: protobuf>=6.32.1 in /opt/venv/lib/python3.12/site-packages (from mavsdk) (7.36.0)
Requirement already satisfied: grpcio>=1.64.1 in /opt/venv/lib/python3.12/site-packages (from mavsdk) (1.83.0)
Requirement already satisfied: typing-extensions~=4.12 in /usr/local/lib/python3.12/dist-packages (from grpcio>=1.64.1->mavsdk) (4.15.0)
WARNING: Skipping /usr/lib/python3.12/dist-packages/pybind11-2.11.1.dist-info due to invalid metadata entry 'name'
When installing packages, the build logs shows that packages are installed successfully.
Extra: shapely and scikit-learn missing from uav environment, causing crashing of pose estimator and filters in UAV. Can consider adding them in pip list or apt list.

On Ubuntu 22.04, packages are usually installed at /usr/lib/python3.12. This allows for packages to access them. However, ROS 2 Jazzy runs natively on Ubuntu 24.04 (Noble Numbat), it strictly enforces [PEP 668 (Marking Python base environments as "externally managed")](https://peps.python.org/pep-0668/)
This results in packages unable to locate these dependencies and break (mostly vision and filters). An approach to use “break-system-packages” is suggested on an [OpenRobotics forum](https://discourse.openrobotics.org/t/rosdep-for-pip-is-broken-on-jazzy/38981).
Behavior: Packages can't be accessed at runtime. When run pip freeze can see that package is installed
When trying to reinstall package, can see that package is already installed in /opt/venv/ instead of /usr/lib/
When installing packages, the build logs shows that packages are installed successfully.
Extra: shapely and scikit-learn missing from uav environment, causing crashing of pose estimator and filters in UAV. Can consider adding them in pip list or apt list.