Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add --break-system-packages to pip install on python 3.11+ #977

Closed

Conversation

InvincibleRMC
Copy link

@InvincibleRMC InvincibleRMC commented Jul 9, 2024

Currently on python 3.11+ install a pip package crashes rosdep with the following error

  executing command [pip3 install -U -q pytest-qt]
  WARNING: Skipping /usr/lib/python3.12/dist-packages/argcomplete-3.1.4.dist-info due to invalid metadata entry 'name'
  WARNING: Skipping /usr/lib/python3.12/dist-packages/argcomplete-3.1.4.dist-info due to invalid metadata entry 'name'
  error: externally-managed-environment
  
  × This environment is externally managed
  ╰─> To install Python packages system-wide, try apt install
      python3-xyz, where xyz is the package you are trying to
      install.
      
      If you wish to install a non-Debian-packaged Python package,
      create a virtual environment using python3 -m venv path/to/venv.
      Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
      sure you have python3-full installed.
      
      If you wish to install a non-Debian packaged Python application,
      it may be easiest to use pipx install xyz, which will manage a
      virtual environment for you. Make sure you have pipx installed.
      
      See /usr/share/doc/python3.12/README.venv for more information.
  
  note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
  hint: See PEP 668 for the detailed specification.
  ERROR: the following rosdeps failed to install
    pip: command [pip3 install -U -q pytest-qt] failed

In the future ros2/ros2#1524 could support virtual environments as well as updating rosdep to support them after that issue gets resolved. However in the interim I added the --break-system-packages to python3.11+.

Closes #978

Copy link

@Aposhian Aposhian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@nuclearsandwich
Copy link
Contributor

Thanks for the PR. I feel pretty strongly that this is a decision each user should be made aware of and opt into by setting this configuration value themselves, even though rosdep will require it.

Disruptive though it is, the Python packaging team and package manager maintainers in operating system distributions have motivations for enacting this change and warning and I do not think it's appropriate for rosdep to squelch the error without communicating the potential impact to users. I've opened #979 which checks for the break-system-packages configuration and attempts to warn the user if it's not enabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Rosdep fails to install pip packages on Python3.11+
3 participants