Windows 10 and pip upgrading - Access denied

11,420

Solution 1

As discussed here, 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.

Solution 2

My first choice in the same situation is to start console with administrator rights. You can do that from start menu or if you are using ConEmu / Cmder, just run new instance / tab as administrator.

Solution 3

Try using this

python -m pip install --user --upgrade pip

Solution 4

I had the same problem. It worked if you run cmd "as administrator" by right-clicking.

Share:
11,420
FalloutBoy
Author by

FalloutBoy

Updated on July 23, 2022

Comments

  • FalloutBoy
    FalloutBoy almost 2 years

    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


    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?

    • poke
      poke over 8 years
      Did you try running the command while being elevated?
    • Thane Plummer
      Thane Plummer over 8 years
      It's not your ConEmu console -- I just upgraded and got the same error using the standard Cygwin console.
    • FalloutBoy
      FalloutBoy over 8 years
      @poke sure. But like Thane Plummer says, it doesn't matter which console. Windows 10 has something generally crapped -.-
    • poke
      poke over 8 years
      I meant running e.g. cmd.exe as administrator (via right-click).
    • FalloutBoy
      FalloutBoy over 8 years
      yes tried it, but same problem
    • Eryk Sun
      Eryk Sun over 8 years
      @poke, the "Administrator" account (SID S-1-5-21-...-500) is disabled by default because it's not subject to UAC. It gets logged on with an unrestricted token that has the BUILTIN\Administrators (S-1-5-32-544) group enabled, an elevated (High) integrity label (S-1-16-12288), and the full set of administrator privileges such as SeTakeOwnershipPrivilege.
    • Eryk Sun
      Eryk Sun over 8 years
      If pip.exe is currently running, then the file is memory-mapped by the memory manager and can't be deleted until the process exits or is forcibly terminated.
  • Roland Smith
    Roland Smith over 8 years
    Please give extra information by editing your question rather than adding it as an answer (which it isn't).
  • FalloutBoy
    FalloutBoy over 8 years
    @Roland Smith seen that in other threads, sorry. Solved the problem for me. It's a windows limitation and wasn't fixed since yet. Use python -m pip install --upgrade pip. Discussed here: github.com/pypa/pip/issues/1299 Summary: The file is locked/ in use and those files can't be deleted. Thanks all!
  • Don O'Donnell
    Don O'Donnell over 7 years
    Just to clarify: open start menu, right click 'command prompt', select 'more', click 'Run as administrator'.
  • Pirate X
    Pirate X over 6 years
    Thanks. This helped !
  • Heewoon
    Heewoon over 2 years
    To summarize, pip is actually upgraded but that fact is not known by python or pip itself. And the error is just fake, or there was an error in the code, that tried to access another directory without elevation.
  • Nic Szerman
    Nic Szerman almost 2 years
    @RolandSmith The question was "Can someone help?" and this post is an answer to that question.