virtualEnvironment/lib/python2.7/site-packages/pip/req/req_install.py
def uninstall(self, auto_confirm=False):
        """
        Uninstall the distribution currently satisfying this requirement.

        Prompts before removing or modifying files unless
        ``auto_confirm`` is True.

        Refuses to delete or modify files outside of ``sys.prefix`` -
        thus uninstallation within a virtual environment can only
        modify that virtual environment, even if the virtualenv is
        linked to global site-packages.

        """
        if not self.check_if_exists():
            raise UninstallationError(
                "Cannot uninstall requirement %s, not installed" % (self.name,)
            )
        dist = self.satisfied_by or self.conflicts_with

        paths_to_remove = UninstallPathSet(dist)
        develop_egg_link = egg_link_path(dist)
        egg_info_exists = dist.egg_info and os.path.exists(dist.egg_info)
        # Special case for distutils installed package
        distutils_egg_info = getattr(dist._provider, 'path', None)
        if develop_egg_link:
            # develop egg
            with open(develop_egg_link, 'r') as fh:
                link_pointer = os.path.normcase(fh.readline().strip())
            assert (link_pointer == dist.location), (
                'Egg-link %s does not match installed location of %s '
                '(at %s)' % (link_pointer, self.name, dist.location)
            )
            paths_to_remove.add(develop_egg_link)
            easy_install_pth = os.path.join(os.path.dirname(develop_egg_link),
                                            'easy-install.pth')
            paths_to_remove.add_pth(easy_install_pth, dist.location)
        elif egg_info_exists and dist.egg_info.endswith('.egg-info'):
            paths_to_remove.add(dist.egg_info)
            if dist.has_metadata('installed-files.txt'):
                for installed_file in dist.get_metadata(
                        'installed-files.txt').splitlines():
                    path = os.path.normpath(
                        os.path.join(dist.egg_info, installed_file)
                    )
                    paths_to_remove.add(path)
            # FIXME: need a test for this elif block
            # occurs with --single-version-externally-managed/--record outside
            # of pip
            elif dist.has_metadata('top_level.txt'):
                if dist.has_metadata('namespace_packages.txt'):
                    namespaces = dist.get_metadata('namespace_packages.txt')
                else:
                    namespaces = []
                for top_level_pkg in [
                        p for p
                        in dist.get_metadata('top_level.txt').splitlines()
                        if p and p not in namespaces]:
                    path = os.path.join(dist.location, top_level_pkg)
                    paths_to_remove.add(path)
                    paths_to_remove.add(path + '.py')
                    paths_to_remove.add(path + '.pyc')

        elif distutils_egg_info:
            warnings.warn(
                "Uninstalling a distutils installed project ({0}) has been "
                "deprecated and will be removed in a future version. This is "
                "due to the fact that uninstalling a distutils project will "
                "only partially uninstall the project.".format(self.name),
                RemovedInPip8Warning,
            )
            paths_to_remove.add(distutils_egg_info)

        elif dist.location.endswith('.egg'):
            # package installed by easy_install
            # We cannot match on dist.egg_name because it can slightly vary
            # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg
            paths_to_remove.add(dist.location)
            easy_install_egg = os.path.split(dist.location)[1]
            easy_install_pth = os.path.join(os.path.dirname(dist.location),
                                            'easy-install.pth')
            paths_to_remove.add_pth(easy_install_pth, './' + easy_install_egg)

        elif egg_info_exists and dist.egg_info.endswith('.dist-info'):
            for path in pip.wheel.uninstallation_paths(dist):
                paths_to_remove.add(path)
        else:
            logger.debug(
                'Not sure how to uninstall: %s - Check: %s',
                dist, dist.location)

        # find distutils scripts= scripts
        if dist.has_metadata('scripts') and dist.metadata_isdir('scripts'):
            for script in dist.metadata_listdir('scripts'):
                if dist_in_usersite(dist):
                    bin_dir = bin_user
                else:
                    bin_dir = bin_py
                paths_to_remove.add(os.path.join(bin_dir, script))
                if WINDOWS:
                    paths_to_remove.add(os.path.join(bin_dir, script) + '.bat')

        # find console_scripts
        if dist.has_metadata('entry_points.txt'):
            config = configparser.SafeConfigParser()
            config.readfp(
                FakeFile(dist.get_metadata_lines('entry_points.txt'))
            )
            if config.has_section('console_scripts'):
                for name, value in config.items('console_scripts'):
                    if dist_in_usersite(dist):
                        bin_dir = bin_user
                    else:
                        bin_dir = bin_py
                    paths_to_remove.add(os.path.join(bin_dir, name))
                    if WINDOWS:
                        paths_to_remove.add(
                            os.path.join(bin_dir, name) + '.exe'
                        )
                        paths_to_remove.add(
                            os.path.join(bin_dir, name) + '.exe.manifest'
                        )
                        paths_to_remove.add(
                            os.path.join(bin_dir, name) + '-script.py'
                        )

        paths_to_remove.remove(auto_confirm)
        self.uninstalled = paths_to_remove
def uninstall(self, auto_confirm=False):
        """
        Uninstall the distribution currently satisfying this requirement.

        Prompts before removing or modifying files unless
        ``auto_confirm`` is True.

        Refuses to delete or modify files outside of ``sys.prefix`` -
        thus uninstallation within a virtual environment can only
        modify that virtual environment, even if the virtualenv is
        linked to global site-packages.

        """
        if not self.check_if_exists():
            raise UninstallationError(
                "Cannot uninstall requirement %s, not installed" % (self.name,)
            )
        dist = self.satisfied_by or self.conflicts_with

        paths_to_remove = UninstallPathSet(dist)
        develop_egg_link = egg_link_path(dist)
        egg_info_exists = dist.egg_info and os.path.exists(dist.egg_info)
        # Special case for distutils installed package
        distutils_egg_info = getattr(dist._provider, 'path', None)
        if develop_egg_link:
            # develop egg
            with open(develop_egg_link, 'r') as fh:
                link_pointer = os.path.normcase(fh.readline().strip())
            assert (link_pointer == dist.location), (
                'Egg-link %s does not match installed location of %s '
                '(at %s)' % (link_pointer, self.name, dist.location)
            )
            paths_to_remove.add(develop_egg_link)
            easy_install_pth = os.path.join(os.path.dirname(develop_egg_link),
                                            'easy-install.pth')
            paths_to_remove.add_pth(easy_install_pth, dist.location)
        elif egg_info_exists and dist.egg_info.endswith('.egg-info'):
            paths_to_remove.add(dist.egg_info)
            if dist.has_metadata('installed-files.txt'):
                for installed_file in dist.get_metadata(
                        'installed-files.txt').splitlines():
                    path = os.path.normpath(
                        os.path.join(dist.egg_info, installed_file)
                    )
                    paths_to_remove.add(path)
            # FIXME: need a test for this elif block
            # occurs with --single-version-externally-managed/--record outside
            # of pip
            elif dist.has_metadata('top_level.txt'):
                if dist.has_metadata('namespace_packages.txt'):
                    namespaces = dist.get_metadata('namespace_packages.txt')
                else:
                    namespaces = []
                for top_level_pkg in [
                        p for p
                        in dist.get_metadata('top_level.txt').splitlines()
                        if p and p not in namespaces]:
                    path = os.path.join(dist.location, top_level_pkg)
                    paths_to_remove.add(path)
                    paths_to_remove.add(path + '.py')
                    paths_to_remove.add(path + '.pyc')

        elif distutils_egg_info:
            warnings.warn(
                "Uninstalling a distutils installed project ({0}) has been "
                "deprecated and will be removed in a future version. This is "
                "due to the fact that uninstalling a distutils project will "
                "only partially uninstall the project.".format(self.name),
                RemovedInPip8Warning,
            )
            paths_to_remove.add(distutils_egg_info)

        elif dist.location.endswith('.egg'):
            # package installed by easy_install
            # We cannot match on dist.egg_name because it can slightly vary
            # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg
            paths_to_remove.add(dist.location)
            easy_install_egg = os.path.split(dist.location)[1]
            easy_install_pth = os.path.join(os.path.dirname(dist.location),
                                            'easy-install.pth')
            paths_to_remove.add_pth(easy_install_pth, './' + easy_install_egg)

        elif egg_info_exists and dist.egg_info.endswith('.dist-info'):
            for path in pip.wheel.uninstallation_paths(dist):
                paths_to_remove.add(path)
        else:
            logger.debug(
                'Not sure how to uninstall: %s - Check: %s',
                dist, dist.location)

        # find distutils scripts= scripts
        if dist.has_metadata('scripts') and dist.metadata_isdir('scripts'):
            for script in dist.metadata_listdir('scripts'):
                if dist_in_usersite(dist):
                    bin_dir = bin_user
                else:
                    bin_dir = bin_py
                paths_to_remove.add(os.path.join(bin_dir, script))
                if WINDOWS:
                    paths_to_remove.add(os.path.join(bin_dir, script) + '.bat')

        # find console_scripts
        if dist.has_metadata('entry_points.txt'):
            config = configparser.SafeConfigParser()
            config.readfp(
                FakeFile(dist.get_metadata_lines('entry_points.txt'))
            )
            if config.has_section('console_scripts'):
                for name, value in config.items('console_scripts'):
                    if dist_in_usersite(dist):
                        bin_dir = bin_user
                    else:
                        bin_dir = bin_py
                    paths_to_remove.add(os.path.join(bin_dir, name))
                    if WINDOWS:
                        paths_to_remove.add(
                            os.path.join(bin_dir, name) + '.exe'
                        )
                        paths_to_remove.add(
                            os.path.join(bin_dir, name) + '.exe.manifest'
                        )
                        paths_to_remove.add(
                            os.path.join(bin_dir, name) + '-script.py'
                        )

        paths_to_remove.remove(auto_confirm)
        self.uninstalled = paths_to_remove
def uninstall ( self , auto_confirm = False ) : if not self . check_if_exists ( ) : raise UninstallationError ( "Cannot uninstall requirement %s, not installed" % ( self . name , ) ) dist = self . satisfied_by or self . conflicts_with paths_to_remove = UninstallPathSet ( dist ) develop_egg_link = egg_link_path ( dist ) egg_info_exists = dist . egg_info and os . path . exists ( dist . egg_info ) # Special case for distutils installed package distutils_egg_info = getattr ( dist . _provider , 'path' , None ) if develop_egg_link : # develop egg with open ( develop_egg_link , 'r' ) as fh : link_pointer = os . path . normcase ( fh . readline ( ) . strip ( ) ) assert ( link_pointer == dist . location ) , ( 'Egg-link %s does not match installed location of %s ' '(at %s)' % ( link_pointer , self . name , dist . location ) ) paths_to_remove . add ( develop_egg_link ) easy_install_pth = os . path . join ( os . path . dirname ( develop_egg_link ) , 'easy-install.pth' ) paths_to_remove . add_pth ( easy_install_pth , dist . location ) elif egg_info_exists and dist . egg_info . endswith ( '.egg-info' ) : paths_to_remove . add ( dist . egg_info ) if dist . has_metadata ( 'installed-files.txt' ) : for installed_file in dist . get_metadata ( 'installed-files.txt' ) . splitlines ( ) : path = os . path . normpath ( os . path . join ( dist . egg_info , installed_file ) ) paths_to_remove . add ( path ) # FIXME: need a test for this elif block # occurs with --single-version-externally-managed/--record outside # of pip elif dist . has_metadata ( 'top_level.txt' ) : if dist . has_metadata ( 'namespace_packages.txt' ) : namespaces = dist . get_metadata ( 'namespace_packages.txt' ) else : namespaces = [ ] for top_level_pkg in [ p for p in dist . get_metadata ( 'top_level.txt' ) . splitlines ( ) if p and p not in namespaces ] : path = os . path . join ( dist . location , top_level_pkg ) paths_to_remove . add ( path ) paths_to_remove . add ( path + '.py' ) paths_to_remove . add ( path + '.pyc' ) elif distutils_egg_info : warnings . warn ( "Uninstalling a distutils installed project ({0}) has been " "deprecated and will be removed in a future version. This is " "due to the fact that uninstalling a distutils project will " "only partially uninstall the project." . format ( self . name ) , RemovedInPip8Warning , ) paths_to_remove . add ( distutils_egg_info ) elif dist . location . endswith ( '.egg' ) : # package installed by easy_install # We cannot match on dist.egg_name because it can slightly vary # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg paths_to_remove . add ( dist . location ) easy_install_egg = os . path . split ( dist . location ) [ 1 ] easy_install_pth = os . path . join ( os . path . dirname ( dist . location ) , 'easy-install.pth' ) paths_to_remove . add_pth ( easy_install_pth , './' + easy_install_egg ) elif egg_info_exists and dist . egg_info . endswith ( '.dist-info' ) : for path in pip . wheel . uninstallation_paths ( dist ) : paths_to_remove . add ( path ) else : logger . debug ( 'Not sure how to uninstall: %s - Check: %s' , dist , dist . location ) # find distutils scripts= scripts if dist . has_metadata ( 'scripts' ) and dist . metadata_isdir ( 'scripts' ) : for script in dist . metadata_listdir ( 'scripts' ) : if dist_in_usersite ( dist ) : bin_dir = bin_user else : bin_dir = bin_py paths_to_remove . add ( os . path . join ( bin_dir , script ) ) if WINDOWS : paths_to_remove . add ( os . path . join ( bin_dir , script ) + '.bat' ) # find console_scripts if dist . has_metadata ( 'entry_points.txt' ) : config = configparser . SafeConfigParser ( ) config . readfp ( FakeFile ( dist . get_metadata_lines ( 'entry_points.txt' ) ) ) if config . has_section ( 'console_scripts' ) : for name , value in config . items ( 'console_scripts' ) : if dist_in_usersite ( dist ) : bin_dir = bin_user else : bin_dir = bin_py paths_to_remove . add ( os . path . join ( bin_dir , name ) ) if WINDOWS : paths_to_remove . add ( os . path . join ( bin_dir , name ) + '.exe' ) paths_to_remove . add ( os . path . join ( bin_dir , name ) + '.exe.manifest' ) paths_to_remove . add ( os . path . join ( bin_dir , name ) + '-script.py' ) paths_to_remove . remove ( auto_confirm ) self . uninstalled = paths_to_remove
Uninstall the distribution currently satisfying this requirement.

        Prompts before removing or modifying files unless
        ``auto_confirm`` is True.

        Refuses to delete or modify files outside of ``sys.prefix`` -
        thus uninstallation within a virtual environment can only
        modify that virtual environment, even if the virtualenv is
        linked to global site-packages.
Uninstall the distribution currently satisfying this requirement .