Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows 10 and pip upgrading - Access denied

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?

like image 251
FalloutBoy Avatar asked Aug 20 '15 19:08

FalloutBoy


3 Answers

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.

like image 63
FalloutBoy Avatar answered Sep 17 '22 08:09

FalloutBoy


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.

like image 40
Fiodor Avatar answered Sep 17 '22 08:09

Fiodor


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

like image 40
Harshita Avatar answered Sep 19 '22 08:09

Harshita