OSX El Capitan: sudo pip install OSError:[Errno: 1] Operación no permitida
ipython failed-installation (12)
TL; corrección de DR $ PATH
-
Use
pip install --user package_name
para instalar un paquete que debe incluir ejecutables de CLI. -
Inicie un shell de Python e
import package_name
-
Encuentre dónde ocurre
lib/python/...
en la salida y reemplácelo todo conbin
-
Es probable que sea
$HOME/Library/Python/2.7/bin
Detalles
Debido a la nueva Protección de integridad del sistema en macOS 10.11 El Capitan, ya no puede
sudo pip install
.
No discutiremos los méritos de eso aquí.
Otra respuesta explica que debe
pip install --user
que es correcto.
Pero lo enviaron a los callejones traseros para averiguar qué hacer con su
$PATH
para que pueda acceder a los ejecutables instalados.
Afortunadamente, ya he resuelto una
necesidad similar de una pregunta no relacionada
.
Aquí hay una transcripción de cómo resolví el problema en uno de mis sistemas.
Lo estoy incluyendo todo más que el
$PATH
que funcionó para mí, porque su sistema puede ser diferente al mío.
Este proceso debería funcionar para todos.
Installing collected packages: six, pyparsing, packaging, appdirs, setuptools
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run
prefix=options.prefix_path,
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 784, in install
**kwargs
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 345, in move_wheel_files
clobber(source, lib_dir, True)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 323, in clobber
shutil.copyfile(srcfile, destfile)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 83, in copyfile
with open(dst, ''wb'') as fdst:
IOError: [Errno 13] Permission denied: ''/Library/Python/2.7/site-packages/six.py''
Cuando corro:
sudo pip install ipython
Obtuve el siguiente error
OSError: [Errno: 1] Operación no permitida: ''/System/Library/Frameworks/Python.framework/Versions/2.7/share''
El último comando ejecutado intenta crear el directorio dado anteriormente.
Además, el siguiente comando no puede instalar iPython sin proporcionar ningún error.
sudo pip install --user python
(Estoy en Mac OS X El Capitan en caso de que otras personas en este sistema operativo vean el mismo problema).
Deberías reinstalar Python:
brew reinstall python
Para obtener cerveza, vea la página de inicio de cerveza .
Es difícil hacer que pip trabaje en El Capitán por varias razones:
-
OS X no establece correctamente algunas variables distutils, por lo que pip intenta instalar archivos auxiliares en ubicaciones en
/System/Library/
. El Capitán bloquea esto, que es el error con el que te estás encontrando. -
OS X incluye varios paquetes desactualizados en
/System/Library/
. pip a menudo quiere actualizar estos pero no puede en El Capitan. -
OS X coloca
/System/Library/
más alto en el orden de búsqueda de Python que/Library/Python/2.7/site-packages
(la ubicación del paquete de Python en todo el sistema), por lo que incluso si logra instalar versiones más nuevas de algunos paquetes, el antiguo todavía se cargan, rompiendo algunas dependencias.
Hay soluciones para todos estos en https://apple.stackexchange.com/a/223163/143849 . Pero es mejor que instales tu propia versión de Python a través del instalador estándar de Python, Homebrew o Anaconda.
Estoy totalmente de acuerdo con Mikko, pero si todavía quieres hacerlo, esta es la forma:
- Reiniciar en modo de recuperación (Mantener cmd + R)
- Abrir terminal desde utilidades
-
Utilice el comando
csrutil disable
Las instrucciones que le dicen a
sudo pip install
son inherentemente incorrectas.
Si hay algún tutorial que diga que debe hacer
sudo pip
, presente un error en este paquete.
El autor está deseducando a la comunidad Python, ya que el tiempo ha demostrado que
sudo pip
es una práctica rota.
OSX El Capitan introdujo un mecanismo para evitar dañar los archivos del sistema operativo
.
/System/Library/Frameworks/Python.framework/Versions/2.7/share
es una de las ubicaciones protegidas.
Un usuario normal no tiene ninguna razón para colocar o escribir ningún archivo allí
.
Esto se debe a que el sistema operativo en sí depende de estos archivos y
sudo pip
, con toda la fuerza dada por lo anterior, los sobrescribirá incondicionalmente.
Por lo general, las cosas malas no sucederían, pero las posibilidades están ahí.
Apple quiere proteger a los usuarios de su sistema operativo para bloquear accidentalmente su instalación.
En su lugar, debe instalar un paquete de Python, como IPython, localmente en la carpeta de inicio de su usuario . La forma más fácil es crear un entorno virtual , activarlo y luego ejecutar pip en el entorno virtual.
Ejemplo:
cd ~ # Go to home directory
virtualenv my-venv
source my-venv/bin/activate
pip install IPython
Más información
Alternativamente, uno debería poder hacer
pip install --user
.
Pero,
una
vez más,
no se necesita sudo
y debe configurar manualmente la
PATH
entorno
PATH
.
Mismo error
$ pip install --user scikit-image h5py keras pygame
Collecting scikit-image
Downloading http://mirrors.aliyun.com/pypi/packages/65/69/27a1d55ce8f77c8ac757938707105b1070ff4f2ae47d2dc99461bfae4491/scikit_image-0.13.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (28.1MB)
100% |████████████████████████████████| 28.1MB 380kB/s
Collecting h5py
Downloading http://mirrors.aliyun.com/pypi/packages/b7/cc/1c29b0815b12de2c92b5323cad60f724ac8f0e39d0166d0b9dfacbcb70dd/h5py-2.7.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.5MB)
100% |████████████████████████████████| 4.5MB 503kB/s
Requirement already satisfied: keras in /Library/Python/2.7/site-packages
Requirement already satisfied: pygame in /Library/Python/2.7/site-packages
Requirement already satisfied: matplotlib>=1.3.1 in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from scikit-image)
Requirement already satisfied: six>=1.7.3 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: pillow>=2.1.0 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: networkx>=1.8 in /Library/Python/2.7/site-packages (from scikit-image)
Requirement already satisfied: PyWavelets>=0.4.0 in /Library/Python/2.7/site-packages (from scikit-image)
Collecting scipy>=0.17.0 (from scikit-image)
Downloading http://mirrors.aliyun.com/pypi/packages/72/eb/d398b9f63ee936575edc62520477d6c2353ed013bacd656bd0c8bc1d0fa7/scipy-0.19.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (16.2MB)
100% |████████████████████████████████| 16.2MB 990kB/s
Requirement already satisfied: numpy>=1.7 in /Library/Python/2.7/site-packages (from h5py)
Requirement already satisfied: theano in /Library/Python/2.7/site-packages (from keras)
Requirement already satisfied: pyyaml in /Library/Python/2.7/site-packages (from keras)
Requirement already satisfied: python-dateutil in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: tornado in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: pyparsing>=1.5.6 in /Users/qiuwei/Library/Python/2.7/lib/python/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: nose in /Library/Python/2.7/site-packages (from matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: olefile in /Library/Python/2.7/site-packages (from pillow>=2.1.0->scikit-image)
Requirement already satisfied: decorator>=3.4.0 in /Library/Python/2.7/site-packages (from networkx>=1.8->scikit-image)
Requirement already satisfied: singledispatch in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: certifi in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Requirement already satisfied: backports_abc>=0.4 in /Library/Python/2.7/site-packages (from tornado->matplotlib>=1.3.1->scikit-image)
Installing collected packages: scipy, scikit-image, h5py
Successfully installed h5py-2.7.0 scikit-image-0.13.0 scipy-0.19.0
y aquí uso
--user
sin
sudo
para resolver este problema
brew doctor
¡Espero que ayude a alguien que encuentre un problema similar!
Supongo que tienes algún conflicto con otro paquete.
Para mí eran las
six
.
Entonces necesita usar un comando como este:
pip install google-api-python-client --upgrade --ignore-installed six
o
pip install --ignore-installed six
Tengo python2.7 instalado a través de brew y lo siguiente resolvió mi problema
instalar cerveza numpy
Instala python3, pero aún funciona y lo configura para 2.7 también.
Tuve los mismos problemas, pero el uso del
easy_install "module"
me resolvió el problema.
No estoy seguro de por qué, pero pip y easy_install usan diferentes ubicaciones de instalación, y easy_install eligió las correctas.
Editar: sin volver a verificar pero debido a los comentarios; parece que diferentes instalaciones (OSX e instaladas en brew) interfieren entre sí, por lo que las herramientas mencionadas apuntan a diferentes ubicaciones (ya que pertenecen a diferentes instalaciones). Entiendo que generalmente esas herramientas de un punto de instalación a la misma carpeta.
Tuve los mismos problemas. Como otros han mencionado, no ejecutes pip install con sudo. correr
$ pip install --user jp
Collecting jp
Downloading jp-0.2.4.tar.gz
Installing collected packages: jp
Running setup.py install for jp ... done
Successfully installed jp-0.2.4
$ python -c ''import jp; print jp''
<module ''jp'' from ''/Users/bbronosky/Library/Python/2.7/lib/python/site-packages/jp/__init__.pyc''>
$ find /Users/bbronosky/Library/Python -type f -perm -100
/Users/bbronosky/Library/Python/2.7/bin/jp
$ which jp
$ echo -e ''/n''''export PATH=$HOME/Library/Python/2.7/bin:$PATH'' >> ~/.bashrc
$ bash # starting a new bash process for demo, but you should open a new terminal
$ which jp
/Users/bbronosky/Library/Python/2.7/bin/jp
$ jp
usage: jp <expression> <filepath>
y corrija las advertencias y debería poder continuar con la instalación de su pip.
Usé
pip3 install <package>
lugar y resolvió el problema de permisos con
pip
.
pip install --ignore-installed six
Esto hará el trabajo, entonces puedes probar tu primer comando.