pip install: compruebe los permisos y el propietario de ese directorio

155

Al instalar pip y python me encontré con un que dice:

El directorio '/ Users / Parthenon / Library / Logs / pi' o su directorio padre no es propiedad del usuario actual y el registro de depuración ha sido deshabilitado. Verifique los permisos y el propietario de ese directorio. Si ejecuta pip con sudo, es posible que desee la bandera -H.

porque ahora tengo que instalar usando sudo.

Tenía Python y un puñado de bibliotecas ya instaladas en mi Mac, estoy ejecutando Yosemite. Recientemente tuve que hacer una limpieza y luego reinstalar el sistema operativo. Ahora recibo este mensaje y tengo problemas para descubrir cómo cambiarlo.

Antes de que mi línea de comando fuera Parthenon$ahora esPhilips-MBP:~ Parthenon$

Soy el único propietario de esta computadora y esta es la única cuenta en ella. Esto parece ser un problema al actualizar a Python 3.4, nada parece estar en el lugar correcto, virtualenv no va a donde esperaba, etc.

Phil Andrews
fuente
¿Su nombre de cuenta es Philip?
komaromy
Acabo de notar que esto sucedió cuando utilicé pip en mi propia máquina ayer, ¿qué quieres decir con virtualenv no va a donde esperas?
Padraic Cunningham
Instalé Python 3.4 en mi máquina, pero cuando ejecuto python en mi terminal, todavía funciona con 2.7 incluso después de pasar por todo el proceso de instalación. Solo mencioné virtualenv porque normalmente esperaría encontrarlo en Library / Python / 3.4 pero no hay Library / Python / 3.4
Phil Andrews
necesita usar algo como python3 o python3.4 para usar el intérprete python3, los elementos que se vuelven a abrir son solo una configuración, ubuntu tiene la misma opción.
Padraic Cunningham
@PadraicCunningham, ¿estás teniendo el mismo problema de pip? ¿Recientemente te actualizaste a Yosemite?
Phil Andrews

Respuestas:

127

También vi este cambio en mi Mac cuando pasé de correr pipa sudo pip. Agregar -Ha sudo hace que el mensaje desaparezca para mí. P.ej

sudo -H pip install foo

man sudome dice que -Hhace sudoque se establezca $HOMEa los usuarios de destino (root en este caso).

Por lo tanto, parece que pip está investigando $HOME/Library/Logy, sudopor defecto, no está configurado $HOMEen /root/. Como era de esperar, ~/Library/Loges propiedad de usted como usuario en lugar de root.

Sospecho que esto es un cambio reciente en pip. Lo ejecutaré sudo -Hpor ahora para evitarlo.

Von
fuente
18
Tenga en cuenta que el uso sudo pipes totalmente incorrecto. Para obtener más información, consulte aquí stackoverflow.com/questions/33004708/…
Mikko Ohtamaa
Tuve el mismo problema, pero sí, ahora tengo que instalar usando la bandera "-H".
Malachi Bazar
62

El problema aquí es que de alguna manera lo instaló en virtualenv usando sudo. Probablemente por accidente. Esto significa que el rootusuario reescribirá los datos del paquete Python, haciendo que todos los archivos sean propiedad de root y su usuario normal ya no pueda escribir esos archivos. Por lo general, virtualenv debe ser usado y propiedad de su usuario normal de UNIX únicamente.

Puede solucionar el problema cambiando el paquete de permisos de archivos UNIX a su usuario. Tratar:

$ sudo chown -R USERNAME /Users/USERNAME/Library/Logs/pip
$ sudo chown -R USERNAME /Users/USERNAME/Library/Caches/pip

entonces pipdebería poder volver a escribir esos archivos.

Más información sobre la gestión de permisos de archivos UNIX

Mikko Ohtamaa
fuente
Pip todavía escribe con el error. También tengo una advertencia similar y mis permisos son correctos, el OP en realidad no está utilizando un virtualenv, por lo que tendría sentido que la instalación de paquetes a nivel mundial requiera sudo.
Padraic Cunningham
1
@PadraicCunningham: Si pip da un error de que sus permisos son incorrectos, muestre los permisos de sus archivos, para que podamos descubrir qué les pasa. De lo contrario, ayudar sería un disparo en la oscuridad.
Mikko Ohtamaa
También le sugiero que abra otra pregunta porque su problema podría ser diferente del que tiene el autor original
Mikko Ohtamaa
Utilizando mi propio nombre de usuario, recibí un error: Entrada: sudo chown -R USERNAME / Users / USERNAME / Library / Logs / pip Output: chown: / Users / USERNAME / Library / Logs / pip: No
existe
61

pip install --user <package name> (no se necesita sudo) funcionó para mí por un problema muy similar.

Safwan
fuente
Debe dar al menos un requisito para la instalación (consulte "instalación de ayuda de pip")
Amir
0

información básica

  • sistema: mac os 18.0.0
  • usuario actual: yutou

la clave

  1. agregar la cuenta corriente al grupo de ruedas
sudo dscl . -append /Groups/wheel wheel $(whoami)
  1. modifique el modo de paquete python a 775.
chmod -R 775 ${this_is_your_python_package_path}

toda la cosa

  • cuando python3 se compiló bien, la información es como dice la pregunta.
  • Intento usar pip3 install requestsy obtuve:
File "/usr/local/python3/lib/python3.6/os.py", line 220, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: 
'/usr/local/python3/lib/python3.6/site-packages/requests'
  • entonces cd /usr/local/python3/lib/python3.6/site-packages, ls -aly obtuve:
drwxr-xr-x    6 root   wheel   192B  2 27 18:06 requests/

cuando vi esto, entendí, makedirs es una acción de escritura, pero el modo de solicitudes drwxrwxr-xvisualizado solo el usuario root puede escribir el archivo de solicitudes. Si agrego yutou ( whoami) a la rueda del grupo, y modifica el paquete, la rueda del grupo puede escribir, entonces yo puedo escribir, y el problema se resuelve.

¿Cómo agregar yutou a la rueda de grupo? + detectar rueda de grupo, sudo dscl . -list /groups GroupMembershipencontrarás:

wheel                    root

el grupo rueda solo un miembro raíz. + Agregar a la rueda yutou grupo sudo dscl . -append /Groups/wheel wheel yutou. + cheque sudo dscl . -list /groups GroupMembership,:

wheel                    root yutou

modificar el modo del paquete python

chmod -R 775 /usr/local/python3/lib/python3.6
kougazhang
fuente
0

Si modificó su variable $ PATH, eso también podría causar el problema. Si cree que ese podría ser el problema, verifique su ~ / .bash_profile o ~ / .bashrc

jeffhale
fuente