2015-08-20 14 views
5

Ho eseguito una nuova installazione di Windows 10, installato python, cygwin e una console migliorata denominata ConEmu. Dopo aver installato python 3.4.3 eseguo:Windows 10 e aggiornamento pip - Accesso negato

pip install -U pip 

E ha ottenuto questo errore.

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' 

ho effettuato l'accesso con l'account Administrator predefinito e la directory temporanea, così come la directory di installazione di Python (C: \ Anwendungsentwicklung \ Python34) ha accesso completo.

Per favore ho testato tutte le varianti impostando diversi diritti ma Windows non me lo consente. Ho persino aggiunto "Everyone" alla scheda di sicurezza, ma questo non ha aiutato, anche se ricordo che funzionava con Windows 7 con questo "trucco". Deve essere un problema con Windows 10. Qualcuno può aiutare ??

enter image description here


Questo è pieno 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' 

Ora ho aggiunto un punto di interruzione 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()) 

Quando eseguo

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

ottengo questo PermissionError, così ho controllato i diritti di questo file exe con

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

e restituisce: '0o100777'

E quando ho ragione, questo significa permesso completo per tutti (proprietario, gruppo e altri).

Sono frustrato:/ Qualcuno un'idea?

+0

Hai provato a eseguire il comando pur essendo elevato? – poke

+0

Non è la tua console ConEmu: ho appena effettuato l'upgrade e ho ricevuto lo stesso errore utilizzando la console Cygwin standard. –

+0

@poke sicuro. Ma come dice Thane Plummer, non importa quale console. Windows 10 ha qualcosa in genere schiacciato -.- – FalloutBoy

risposta

4

Come discusso here, è un limite di Windows. In breve, il file pip.exe è in uso e quindi bloccato e non può essere cancellato. Utilizzare python -m pip install --upgrade pip.

+0

Fornisci ulteriori informazioni * modificando la tua domanda * anziché aggiungerla come risposta (che non è). –

+0

@Roland Smith visto quello in altri thread, mi dispiace. Risolto il problema per me. È una limitazione di Windows e non è stato ancora risolto. Utilizzare python -m pip install --upgrade pip. Discusso qui: https://github.com/pypa/pip/issues/1299 Riepilogo: il file è bloccato/in uso e tali file non possono essere eliminati. Grazie a tutti! – FalloutBoy

+0

Dovresti fare * quella * una risposta e accettarla. –

4

La mia prima scelta nella stessa situazione è avviare la console con i diritti di amministratore. Puoi farlo dal menu di avvio o se stai usando ConEmu/Cmder, basta eseguire la nuova istanza/tab come amministratore.

+0

Giusto per chiarire: apri il menu di avvio, fai clic destro 'prompt dei comandi', seleziona 'altro', fai clic su 'Esegui come amministratore'. –

+0

Grazie. Questo ha aiutato! –

Problemi correlati