From 74bb5d26e232493de43adfa1f4b42b66fd701294 Mon Sep 17 00:00:00 2001 From: Tomas Hrnciar Date: Sun, 26 Apr 2020 13:52:24 +0200 Subject: [PATCH] Downstream only patch Emit a warning to the user if pip install is run with root privileges Issue upstream: https://github.com/pypa/pip/issues/4288 --- src/pip/_internal/commands/install.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py index 70bda2e2..1e750ae1 100644 --- a/src/pip/_internal/commands/install.py +++ b/src/pip/_internal/commands/install.py @@ -13,6 +13,8 @@ import operator import os import shutil import site +import sys +from os import path from optparse import SUPPRESS_HELP from pip._vendor import pkg_resources @@ -241,6 +243,23 @@ class InstallCommand(RequirementCommand): raise CommandError("Can not combine '--user' and '--target'") cmdoptions.check_install_build_global(options) + + def is_venv(): + return (hasattr(sys, 'real_prefix') or + (hasattr(sys, 'base_prefix') and + sys.base_prefix != sys.prefix)) + + # Check whether we have root privileges and aren't in venv/virtualenv + if os.getuid() == 0 and not is_venv(): + command = path.basename(sys.argv[0]) + if command == "__main__.py": + command = path.basename(sys.executable) + " -m pip" + logger.warning( + "Running pip install with root privileges is " + "generally not a good idea. Try `%s install --user` instead." + % command + ) + upgrade_strategy = "to-satisfy-only" if options.upgrade: upgrade_strategy = options.upgrade_strategy -- 2.23.0