diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py index 1279d4a..aeb9d26 100644 --- a/src/pip/_internal/commands/install.py +++ b/src/pip/_internal/commands/install.py @@ -5,6 +5,8 @@ import logging import operator import os import shutil +import sys +from os import path from optparse import SUPPRESS_HELP from pip._vendor import pkg_resources @@ -217,6 +219,23 @@ class InstallCommand(RequirementCommand): def run(self, options, args): 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