python - paquetes - upgrade pip windows
¿Es aceptable y seguro ejecutar pip install bajo sudo? (6)
¿Es aceptable y seguro ejecutar
pip install
bajosudo
?
No es seguro y está siendo mal visto - ver ¿Cuáles son los riesgos de ejecutar ''sudo pip''? Para instalar el paquete Python en su directorio de inicio no necesita privilegios de root. Ver description de --user
del --user
a pip.
Empecé a usar mi Mac para instalar paquetes de Python de la misma manera que lo hago con mi PC con Windows en el trabajo; sin embargo, en mi Mac he encontrado frecuentes errores de denegación de permisos al escribir en archivos de registro o paquetes de sitios.
Por lo tanto, pensé en ejecutar pip install <package>
en sudo
pero ¿es eso un uso seguro / aceptable de sudo teniendo en cuenta que solo deseo que esto se instale en mi cuenta de usuario actual?
Ejemplo de rastreo de un error de E / S del archivo de registro:
Command /usr/bin/python -c "import setuptools;__file__=''/Users/markwalker/build/pycrypto/setup.py'';exec(compile(open(__file__).read().replace(''/r/n'', ''/n''), __file__, ''exec''))" install --single-version-externally-managed --record /var/folders/tq/hy1fz_4j27v6rstzzw4vymnr0000gp/T/pip-k6f2FU-record/install-record.txt failed with error code 1 in /Users/markwalker/build/pycrypto
Storing complete log in /Users/markwalker/Library/Logs/pip.log
Traceback (most recent call last):
File "/usr/local/bin/pip", line 8, in <module>
load_entry_point(''pip==1.1'', ''console_scripts'', ''pip'')()
File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py", line 116, in main
return command.main(args[1:], options)
File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 141, in main
log_fp = open_logfile(log_fn, ''w'')
File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 168, in open_logfile
log_fp = open(filename, mode)
IOError: [Errno 13] Permission denied: ''/Users/markwalker/Library/Logs/pip.log''
Actualización Esto probablemente se debió a los permisos, sin embargo, el mejor enfoque es utilizar entornos virtuales para sus proyectos de Python. Se debe evitar ejecutar sudo pip
menos que sea absolutamente necesario.
Debido a que tuve el mismo problema, quiero enfatizar que en realidad el primer comentario de Brian Cain es la solución al "IOError: [Errno 13]" - problema:
Si se ejecuta en el directorio temporal ( cd /tmp
), IOError ya no se ejecuta si ejecuto sudo pip install foo
.
Parece que tus permisos están en mal estado. Escriba chown -R markwalker ~
en la Terminal y pruebe pip
nuevamente? Avísame si estás ordenado.
Su problema original es que pip no puede escribir los registros en la carpeta.
IOError: [Errno 13] Permission denied: ''/Users/markwalker/Library/Logs/pip.log''
Debe ingresar en una carpeta en la que el proceso invocado pueda escribir como /tmp
para que un cd /tmp
y volver a invocar el comando probablemente funcione, pero no es lo que desea.
PERO en realidad para este caso en particular (no desea usar sudo
para instalar paquetes de Python) y no es necesario instalar paquetes globales, puede usar el indicador de --user
esta manera:
pip install --user <packagename>
y funcionará bien.
Supongo que tiene una instalación python python de un usuario y no quiere preocuparse por leer virtualenv (que no es muy pipenv ) o pipenv .
Como algunas personas en la sección de comentarios han señalado, el siguiente enfoque no es una buena idea a menos que no sepas qué hacer y se quede atascado:
Otro enfoque para paquetes globales como en su caso, quiere hacer algo como:
chown -R $USER /Library/Python/2.7/site-packages/
o más en general
chown -R $USER <path to your global pip packages>
Tuve un problema al instalar virtualenvwrapper
después de instalar virtualenv
éxito.
Mi terminal se quejó después de que hice esto:
pip install virtualenvwrapper
Entonces, sin éxito, probé esto ( NO RECOMENDADO ):
sudo pip install virtualenvwrapper
Entonces, lo instalé con éxito con esto:
pip install --user virtualenvwrapper
Use un entorno virtual :
$ virtualenv myenv
.. some output ..
$ source myenv/bin/activate
(myenv) $ pip install what-i-want
Solo utiliza sudo
o permisos elevados cuando desea instalar cosas para la instalación global de Python en todo el sistema.
Lo mejor es usar un entorno virtual que aísle paquetes por usted. De esa forma puedes jugar sin contaminar la instalación global de python.
Como beneficio adicional, virtualenv no necesita permisos elevados.