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 me he encontrado con frecuentes errores de permiso denegado al escribir en archivos de registro o paquetes de sitios.
Por lo tanto pensé en correr pip install <package>
bajo sudo
, pero es que un uso seguro / aceptable de sudo teniendo en cuenta que sólo estoy deseando que esto se instala debajo de mi cuenta de usuario actual?
Ejemplo de rastreo de un error de E / S de 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
Es probable que esto se deba a los permisos, sin embargo, el mejor enfoque es usar entornos virtuales para sus proyectos de Python. sudo pip
Se debe evitar correr a menos que sea absolutamente necesario.
cd /tmp; sudo pip install foo
' es una solución adecuada.Respuestas:
Utilice un entorno virtual :
Solo usa
sudo
permisos elevados o elevados cuando desea instalar cosas para la instalación global de Python en todo el sistema.Es mejor utilizar un entorno virtual que aísle los paquetes por usted. De esa manera, puede jugar sin contaminar la instalación global de Python.
Como beneficio adicional, virtualenv no necesita permisos elevados.
fuente
sudo pip install
. Digamos que necesito instalar algún paquete que usaré en muchos proyectos o en el nivel del sistema. Como alguna herramienta CLI comopgcli
. Obviamente no necesito un entorno virtual para ello, quiero instalarlo globalmente. ¿Debo usarsudo pip install
o hay algunas prácticas más correctas? Esa es la pregunta.No es seguro y está mal visto; consulte ¿Cuáles son los riesgos de ejecutar 'sudo pip'? Para instalar el paquete Python en su directorio personal, no necesita privilegios de root. Consulte la descripción de la
--user
opción de pip.fuente
sudo pip install
conocía los daños de usarlo. ¿Cómo puedo deshacer este comando o bloquear para ejecutarsudo
?Su problema original es que pip no puede escribir los registros en la carpeta.
Necesita cd en una carpeta en la que el proceso invocado pueda escribir
/tmp
asícd /tmp
y volver a invocar el comando probablemente funcionará, pero no es lo que desea.PERO en realidad para este caso en particular (no desea usarlo
sudo
para instalar paquetes de Python) y no necesita instalaciones de paquetes globales, puede usar la--user
bandera de esta manera:y funcionará bien.
Supongo que tiene una instalación de python python para un usuario y no quiere molestarse en leer sobre virtualenv (que no es muy fácil de usar ) o pipenv .
Como han señalado algunas personas en la sección de comentarios, el siguiente enfoque no es una muy buena idea a menos que no sepa qué hacer y se quede atascado:
Otro enfoque para paquetes globales, como en su caso, desea hacer algo como:
o más generalmente
fuente
--user
opción de pip se dio como una solución en mi respuesta que ya existía cuando escribiste la tuya.--user
me ayuda!site-packages
directorio completo de Python del sistema es similar a "arreglar" una bomba golpeándola con una llave. Está protegido por una razón: se supone que no debes instalar cosas allí . La verdadera solución no es mezclar la distribución de Python del sistema con la programación del día a día. Instale una distribución de Python diferente (de Python.org, Homebrew, Canopy, etc.).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
), el IOError ya no ocurre si ejecutosudo pip install foo
.fuente
sudo pip
con esta "solución" y por lo tanto está instalando paquetes con privilegios de root, que probablemente no sea lo que desea?/tmp
, funciona, porque todos tienen acceso de escritura allí.Tuve un problema al instalar
virtualenvwrapper
después de instalar con éxitovirtualenv
.Mi terminal se quejó después de que hice esto:
Entonces, probé esto sin éxito
(NO RECOMENDADO):Luego, lo instalé con éxito con esto:
fuente
Parece que tus permisos están en mal estado. ¿Escribe
chown -R markwalker ~
la Terminal ypip
vuelve a intentarlo ? Avísame si estás ordenado.fuente
chown
está dandoOperation not permitted
muchos directorios ocultos como.shsh
& supongo que está trabajando a través de archivos que puede configurar ahora, pero veré qué sucede cuando el indicador cli regrese.