2010-12-07 7 views
46

pip install --upgrade pip no funciona porque Windows FS está dañado en el cerebro y no le permitirá eliminar un archivo abierto.alguna idea de cómo actualizar Python PIP en un cuadro de Windows?

He tratado de establecer mi entorno a la virtualenv que quiero actualizar y luego corriendo de un pip diferente, pero que falla con:

(jm) E:\python\jm>c:\Python26\Scripts\pip install --upgrade pip 
Downloading/unpacking pip 
    Running setup.py egg_info for package pip 
    warning: no previously-included files matching '*.txt' found under directory 'docs\_build' 
    no previously-included directories found matching 'docs\_build\_sources' 
Installing collected packages: pip 
    Found existing installation: pip 0.7.1 
    Uninstalling pip: 
     Successfully uninstalled pip 
    Running setup.py install for pip 
    warning: no previously-included files matching '*.txt' found under directory 'docs\_build' 
    no previously-included directories found matching 'docs\_build\_sources' 
    Installing pip-script.py script to c:\Python26\Scripts 
    Installing pip.exe script to c:\Python26\Scripts 
    Installing pip.exe.manifest script to c:\Python26\Scripts 
    Installing pip-2.6-script.py script to c:\Python26\Scripts 
    Installing pip-2.6.exe script to c:\Python26\Scripts 
    Installing pip-2.6.exe.manifest script to c:\Python26\Scripts 
Exception: 
Traceback (most recent call last): 
    File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\basecommand.py", line 120, in main 
    File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\commands\install.py", line 165, in run 
    File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\req.py", line 1251, in install 
    File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\req.py", line 466, in commit_uninstall 
    File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\req.py", line 1549, in commit 
    File "c:\Python26\lib\shutil.py", line 216, in rmtree 
    rmtree(fullname, ignore_errors, onerror) 
    File "c:\Python26\lib\shutil.py", line 216, in rmtree 
    rmtree(fullname, ignore_errors, onerror) 
    File "c:\Python26\lib\shutil.py", line 221, in rmtree 
    onerror(os.remove, fullname, sys.exc_info()) 
    File "c:\Python26\lib\shutil.py", line 219, in rmtree 
    os.remove(fullname) 
WindowsError: [Error 5] Access is denied: 'c:\\users\\mark\\appdata\\local\\temp\\pip-gvsove-uninstall\\python26\\scripts\\pip.exe' 

Storing complete log in C:\Users\mark\AppData\Roaming\pip\pip.log 

(jm) E:\python\jm>dir c:\Users\mark\AppData\Local\temp\pip-gvsove-uninstall\python26\scripts 
Volume in drive C has no label. 
Volume Serial Number is 74E4-FE9F 

Directory of c:\Users\mark\AppData\Local\temp\pip-gvsove-uninstall\python26\scripts 

12/07/2010 11:32 AM <DIR>   . 
12/07/2010 11:32 AM <DIR>   .. 
05/14/2010 05:54 PM    7,168 pip.exe 
       1 File(s)   7,168 bytes 
       2 Dir(s) 22,824,603,648 bytes free 

(jm) E:\python\jm>del c:\Users\mark\AppData\Local\temp\pip-gvsove-uninstall\python26\scripts\pip.exe 

Estoy esperando que alguien más ha descubierto una manera de alrededor de esto Su ningún problema en linux ....

+0

Recibí el error, pero la actualización funcionó de hecho. – yoyo

+0

Es genial ver que esto sigue siendo un problema 3,5 años después con el último Python 2.7.10 y el pip 7.1.2 en Windows. Ninguna de las sugerencias a continuación lo arregla. Muy impresionante. – jarmod

+0

La solución que funcionó para mí es [aquí] (http://stackoverflow.com/a/17687817/2412846). En resumen: está usando pip para actualizar pip, pero como se está ejecutando, no puede sobrescribirse. Cópialo en algún lado y ejecútalo desde allí. – davidhigh

Respuesta

92

easy_install -U pip

:-)

+2

Eso fue demasiado simple. No sabía que easy_install entendía virtualenvs. Gracias. Cada – boatcoder

+1

virtualenv consigue setuptools instalados en ella, así como de pepita - muy útil para saber acerca de los paquetes que actualmente no se instalan limpiamente de las fuentes en Windows (sin retoques) como PIL, para lo cual easy_install utilizará el instalador .exe (por lo menos hasta que pip gane esta capacidad). –

13

[ACTUALIZACIÓN 15/11/2015] Este post es obsoleto y fuera de fecha. La mejor práctica actual es according to pip es el uso de lo siguiente:

python -m pip install -U pip setuptools 

No es necesario el uso de setuptoolseasy_install. El procedimiento recomendado para actualizar pip, desde la página pip-installer es usar get-pip.py.

para instalar o actualización pip, con seguridad descargar get-pip.py.

Puede utilizar el siguiente en un Bash shell como msysgit's Git Bash.

[email protected] ~$ curl -L https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py | python 

Utilice la opción -L seguir redirecciones. Recientemente, GitHub cambió la URL del contenido sin procesar, por lo que the old raw get-pip.py url ha sido redirected y en el sitio web de pip the url was changed. Si tiene éxito, debería ver lo siguiente:

$ curl -L https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py | python 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 1309k 100 1309k 0  0 364k  0 0:00:03 0:00:03 --:--:-- 366k 
Downloading/unpacking pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-1.5.6-py2.py3-none-any.whl#md5=4d4fb4b69df6731c7aeaadd6300bc1f2 
Installing collected packages: pip 
    Found existing installation: pip 1.5.4 
    Uninstalling pip: 
     Successfully uninstalled pip 
Successfully installed pip 
Cleaning up... 

Usted puede modificar esto para la línea de comandos de Windows, pero en primer lugar, si usted no tiene libcurl, download a Windows binary from Curl. Deseará desplazarse hasta la parte inferior y obtener Günter Knauf's current official Win32 binary (currently 7.29) y descomprimirlo. No se preocupe por que sea de 32 bits frente a 64 bits. Solo asegúrate de obtener el que tiene todas las características (ssl, zlib, etc.). Ahora navegue a la carpeta donde descargó curl, probablemente c:\Users\<you>\Downloads, abra la carpeta extraída, probablemente curl-7.29.0-rtmp-ssh2-ssl-sspi-zlib-idn-static-bin-w32, y debería encontrar curl.exe. ¡Hurra! Ahora en un shell de Windows, escriba esto después del aviso (que tendrá su nombre de usuario en lugar de myusername), reemplazando path\to\Curl\ con la ruta al archivo curl.exe descargado.

C:\Users\myusername> path\to\Curl\curl.exe -kL https://bootstrap.pypa.io/get-pip.py | python 

Usted necesita la opción -k para permitir rizo para acceder al sitio de pepita GitHub seguro sin CERT. Además, gracias Piotr Dobrogost por informarme sobre las tuberías de Windows, |, que guarda el paso de guardar el archivo.

Si ya tiene la última versión del PIP obtendrá el siguiente mensaje:

$ curl https://bootstrap.pypa.io/get-pip.py | python 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 1309k 100 1309k 0  0 369k  0 0:00:03 0:00:03 --:--:-- 371k 
Requirement already up-to-date: pip in c:\python27\lib\site-packages 
Cleaning up... 

También funciona muy bien en virtualenvs.

+1

Puede usar tuberías en Windows. :) –

+0

Esto no se actualiza - dice "requisitos ya actualizados: pip" si el pip ya está instalado. – remram

+0

@remram puede publicar su sesión de terminal. Esta no ha sido mi experiencia. He usado este método muchas, muchas veces para actualizar pip a la última, pero no he visto el mensaje que está describiendo. Todavía tiene problemas. Estoy feliz de solucionarlo con usted. –

49

Run pip como un script, usando Python como el ejecutable principal.

python -m pip install -U pip 
+5

Los tiempos han cambiado y creo que esta es la nueva forma de hacerlo. – boatcoder

+3

Sí, esto parece ser lo que los desarrolladores PIP decidió recomendar cuando discutieron este error: https://github.com/pypa/pip/issues/1299 – user9876

+0

Éste es bueno. – AskMe

Cuestiones relacionadas