actions / setup-python

Set up your GitHub Actions workflow with a specific version of Python
MIT License
1.74k stars 548 forks source link

PIP_ROOT_USER_ACTION=ignore ignored: pip still issues error messages about running it as root #930

Closed RoFz closed 1 month ago

RoFz commented 2 months ago

Description: setup-action@v5 and python-version: 3.11 leads to pip's warnings about running as root, which should have been suppressed by the install script on self-hosted runner and GHES 3.12.8.

Action version: @v5

Platform:

Runner type:

Tools version: python 3.11 (3.11.9)

Repro steps:

  1. job running under an ubuntu:jammy container image, as root (without 'options: --user ...)
  2. setup-python step like so:
      - name: Set up python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

Expected behavior: No warnings, since the the install script seems to properly export PIP_ROOT_USER_ACTION=ignore.

Actual behavior: pip throws the known errors (warnings?) about running it as root:

Error: WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behavior with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
  Error: WARNING: The directory '/github/home/.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.

This is related to https://github.com/actions/setup-python/issues/513, which, although initially opened as a feature request and closed as such, is still receiving updates from people impacted by the same problem.

RoFz commented 2 months ago

Additional note: also tried with setup-python@v4 and specific python versions 3.11.9 and 3.11.8.

priyagupta108 commented 2 months ago

Hello @RoFz πŸ‘‹, Thank you for reporting this issue. We will investigate it and get back to you as soon as we have some feedback.

priya-kinthali commented 1 month ago

Hello @RoFz πŸ‘‹, Thankyou for reporting the issue!
 The warning about the pip cache within Docker containers arises because the directory /github/home/.cache/pip is either not owned by or not writable by the current user. The ownership and permissions might not align with the user running the pip command. To resolve this issue, please try the following step before the setup-python action:


 -name: Change ownership of /github/home
  run: sudo chown -R $(whoami) /github/home
       

Regarding the warning related to running pip as root: The setup-python action correctly sets the PIP_ROOT_USER_ACTION=ignore environment variable. This setting works as expected for more recent pip versions (23.0.1 and above). Therefore, this is expected behaviour and is not related to the setup-python action. Hope this clarifies the situation.

maikelvdh commented 1 month ago

@priya-kinthali the PIP_ROOT_USER_ACTION has no effect for the called ensurepip command which is printing this respective warning. Reason seems that this module is sanitising the environment context, see: https://github.com/python/cpython/blob/main/Lib/ensurepip/__init__.py#L97-L106.

priya-kinthali commented 1 month ago

Hello @RoFz πŸ‘‹, I hope the suggested workaround has addressed the issue related to the pip cache warning.

Thank you, @maikelvdh, for your valuable insights regarding the pip cache warning 😊. As you correctly pointed out, the warning from the ensurepip command is due to the environment context being sanitized.

PIP_ROOT_USER_ACTION has no effect for the called ensurepip command which is printing this respective warning.

Additionally, the PIP_ROOT_USER_ACTION=ignore variable is correctly set and functions as expected for pip versions >=23.0.2 in the setup-python action. Since this behaviour is inherent to pip and not specifically related to the setup-python action, I am proceeding to close this issue. Please feel free to reopen this issue or create a new one incase of any further concerns.

Thank you for your patience! 😊