Windows 10 and pip upgrading - Access denied
Question: I have done a fresh Windows 10 install, installed python, cygwin and a
improved console called ConEmu. After installing python 3.4.3 I execute:

    
    
    pip install -U pip
    

And got this error.

    
    
    File "C:\Anwendungsentwicklung\Python34\lib\site-packages\pip\utils\__init__.py", line 70, in rmtree_errorhandler
      os.makedirs(path)
    PermissionError: [WinError 5] Zugriff verweigert:  'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-dxm8d3xg-uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'
    

I'm logged in with pre-defined Administrator account and the temp dir as well
as the installation dir of Python (C:\Anwendungsentwicklung\Python34) has full
access.

Please I have tested all variations by setting different rights but Windows
won't let me. I even added "Everyone" to security tab but this didn't help
although I remember it was working with Windows 7 with this "trick". It must
be a problem with Windows 10. Can someone help??

[![enter image description
here](http://i.stack.imgur.com/HCuYy.png)](http://i.stack.imgur.com/HCuYy.png)

* * *

This is full traceback

    
    
      Exception:
    Traceback (most recent call last):
    File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 372, in  _rmtree_unsafe
      os.unlink(fullname)
    PermissionError: [WinError 5] Zugriff verweigert:  'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-k7g0hd6t- uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
    File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\basecommand.py", line 232, in main
      logger.critical('Operation cancelled by user')
    File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\commands\install.py", line 347, in run
      ensure_dir(options.target_dir)
    File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\req\req_set.py", line 560, in install
      missing_requested = sorted(
    File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\req\req_install.py", line 677, in commit_uninstall
      logger.debug(
    File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\req\req_uninstall.py", line 153, in commit
      self.save_dir = None
    File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\utils\__init__.py", line 58, in rmtree
      SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS
    File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 484, in rmtree
      return _rmtree_unsafe(path, onerror)
    File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 368, in _rmtree_unsafe
      _rmtree_unsafe(fullname, onerror)
    File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 368, in _rmtree_unsafe
      _rmtree_unsafe(fullname, onerror)
    File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 368, in _rmtree_unsafe
      _rmtree_unsafe(fullname, onerror)
    File "c:\anwendungsentwicklung\python34\lib\shutil.py", line 376, in _rmtree_unsafe
      print(fullname)
    File "c:\anwendungsentwicklung\python34\lib\site-packages\pip\utils\__init__.py", line 70, in rmtree_errorhandler
      try:
    PermissionError: [WinError 5] Zugriff verweigert: 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-k7g0hd6t-uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'
    

Now I added a breakpoint in "c:\anwendungsentwicklung\python34\lib\shutil.py":

    
    
    # version vulnerable to race conditions
    def _rmtree_unsafe(path, onerror):
    try:
        if os.path.islink(path):
            # symlinks to directories are forbidden, see bug #1669
            raise OSError("Cannot call rmtree on a symbolic link")
    except OSError:
        onerror(os.path.islink, path, sys.exc_info())
        # can't continue even if onerror hook returns
        return
    names = []
    try:
        names = os.listdir(path)
    except OSError:
        onerror(os.listdir, path, sys.exc_info())
    for name in names:
        fullname = os.path.join(path, name)
        try:
            mode = os.lstat(fullname).st_mode
        except OSError:
            mode = 0
        if stat.S_ISDIR(mode):
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
                #import pdb
                os.unlink(fullname)
                #pdb.set_trace()
            except OSError:
                import pdb; pdb.set_trace()
                print(fullname)
                import getpass
                print(getpass.getuser())
                onerror(os.unlink, fullname, sys.exc_info())
    try:
        os.rmdir(path)
    except OSError:
        onerror(os.rmdir, path, sys.exc_info())
    

When i execute

    
    
    os.unlink(fullname) # 'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-k7g0hd6t- uninstall\\anwendungsentwicklung\\python34\\scripts\\pip.exe'
    

I get this `PermissionError`, so i checked the rights of this .exe file with

    
    
    oct(os.stat(fullname)[ST_MODE])
    

and it returns: '0o100777'

And when i'm right, this means full permission for everyone (owner, group and
others).

I'm frustrated :/ Someone an idea?


Answer: As discussed [here](https://github.com/pypa/pip/issues/1299), it's a Windows
limitation. In brief, the pip.exe file is in use and thus locked and can't be
deleted. Use `python -m pip install --upgrade pip`.

