OSX El Capitan: sudo pip install OSError: Operación no permitida

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 indicado 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).

Las instrucciones que dicen a sudo pip install son intrínsecamente incorrectas.

Si hay algún tutorial que diga que debe hacer sudo pip , por favor presente un error en este paquete. El autor está des-educando a la comunidad de Python, ya que el tiempo ha demostrado que sudo pip es una práctica quebrada.

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 poner o escribir ningún archivo allí . Esto se debe a que el sistema operativo depende de estos archivos y sudo pip , con toda la fuerza dada desde arriba, los sobrescribiría incondicionalmente. Por lo general, las cosas malas no sucederían, pero las posibilidades están ahí. Apple quiere proteger a sus usuarios de sistemas operativos para que bloqueen 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

  • Tutorial oficial de instalación del paquete de Python .

  • Cómo crear entornos virtuales .

Alternativamente, uno debería poder hacer la pip install --user . Pero, de nuevo, no se necesita sudo y es necesario configurar manualmente la PATH entorno PATH .

Tuve los mismos problemas, pero el uso del easy_install "module" me solucionó 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 las diferentes instalaciones (OSX y brew-installed) interfieren entre sí, razón por la cual las herramientas mencionadas apuntan a ubicaciones diferentes (ya que pertenecen a diferentes instalaciones). Entiendo que generalmente esas herramientas de un punto de instalación a la misma carpeta.

Deberías reinstalar Python:

 brew reinstall python 

Para obtener brew ver la página de brew .

pip install --ignore-installed six

Esto hará el trabajo, entonces puedes probar tu primer comando.

A través de http://github.com/pypa/pip/issues/3165

Usó pip3 install lugar y resolvió el problema de permiso con pip .

Tuve los mismos problemas. Como otros han mencionado, no ejecute pip install con sudo. correr

 brew doctor 

y arregla las advertencias y deberías poder continuar con tu instalación de pip.

Mismo error

 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' 

y aquí uso --user sin sudo para resolver este problema

 $ 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 

Espero que ayude a alguien que se encuentre con un problema similar.

TL; DR $ RUTA de corrección

  1. Use pip install --user package_name para instalar un paquete que debe incluir ejecutables CLI.
  2. Lanzar un shell python e import package_name
  3. Encuentre dónde se encuentra lib/python/... en la salida y reemplácelo con bin
  4. 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 te enviaron a los callejones de atrás para descubrir qué hacer con respecto a $PATH para que puedas 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 incluyo todo en lugar de $PATH que funcionó para mí, porque su sistema puede ser diferente al mío. Este proceso debería funcionar para todos.

 $ 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'  $ 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   

Es difícil trabajar en El Capitan por varias razones:

  1. OS X no configura algunas variables de distutils correctamente, por lo que pip intenta instalar archivos auxiliares en ubicaciones en /System/Library/ . El Capitan bloquea esto, que es el error con el que te estás encontrando.
  2. OS X incluye una serie de paquetes desactualizados en /System/Library/ . pip a menudo quiere actualizar estos pero no puede en El Capitan.
  3. OS X coloca /System/Library/ higher en el orden de búsqueda Python que /Library/Python/2.7/site-packages (la ubicación del paquete python en todo el sistema), por lo que incluso si logra instalar versiones más recientes de algunos paquetes, el antiguo aún 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.

Supongo que tienes algún conflicto con otro paquete. Para mí fueron las six . Entonces necesitas usar un comando como este:

 pip install google-api-python-client --upgrade --ignore-installed six 

o

pip install --ignore-installed six

Estoy totalmente de acuerdo con Mikko, pero si aún quieres hacerlo, aquí está el camino:

  • Reiniciar en modo de recuperación (Mantener cmd + R)
  • Terminal abierto de utilidades
  • Use el comando csrutil disable

He instalado Python2.7 vía brew y lo siguiente resolvió mi problema

brew instalar numpy

Instala python3, pero todavía funciona y lo configura para 2.7 también.

Al igual que tu, tuve el mismo problema. Estoy ejecutando El Capitan y tratando de instalar Juypter con python2.7 Así es como pude hacerlo:

Primero instala Juypter (también funcionaría con pip3 ):

 sudo -H pip install --ignore-installed six --user --install jupiter 

Luego necesita instalar el kernel de Python 2.7; de lo contrario, solo podrá usar python3 para el notebook.

 sudo -H python -m pip install --user --ignore-installed six --upgrade ipykernel python -m ipykernel install --user 

Esto puede ser útil para aquellos que desean mantener la instalación de Apple de python2.7 y desean usar el portátil Jupyter con python2.7 y python3.

Esto lo hizo después de que pip install ipython fallara:

 SF55M:~ 278$ sudo easy_install ipython Searching for ipython Best match: ipython 5.4.1 Adding ipython 5.4.1 to easy-install.pth file Installing ipython script to /usr/local/bin Installing iptest2 script to /usr/local/bin Installing iptest script to /usr/local/bin Installing ipython2 script to /usr/local/bin Using /Library/Python/2.7/site-packages Processing dependencies for ipython Finished processing dependencies for ipython SF55M:~ 278$ pip install ipython Requirement already satisfied: ipython in /Library/Python/2.7/site-packages Requirement already satisfied: prompt-toolkit<2.0.0,>=1.0.4 in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: decorator in /Library/Python/2.7/site- packages (from ipython) Requirement already satisfied: setuptools>=18.5 in /Library/Python/2.7/site- packages/setuptools-19.6.1-py2.7.egg (from ipython) Requirement already satisfied: pickleshare in /Library/Python/2.7/site- packages (from ipython) Requirement already satisfied: pygments in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: pexpect; sys_platform != "win32" in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: pathlib2; python_version == "2.7" or python_version == "3.3" in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: backports.shutil-get-terminal-size; python_version == "2.7" in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: simplegeneric>0.8 in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: traitlets>=4.2 in /Library/Python/2.7/site- packages (from ipython) Requirement already satisfied: appnope; sys_platform == "darwin" in /Library/Python/2.7/site-packages (from ipython) Requirement already satisfied: six>=1.9.0 in /Library/Python/2.7/site- packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython) Requirement already satisfied: wcwidth in /Library/Python/2.7/site-packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython) Requirement already satisfied: ptyprocess>=0.5 in /Library/Python/2.7/site- packages (from pexpect; sys_platform != "win32"->ipython) Requirement already satisfied: scandir; python_version < "3.5" in /Library/Python/2.7/site-packages (from pathlib2; python_version == "2.7" or python_version == "3.3"->ipython) Requirement already satisfied: enum34; python_version == "2.7" in /Library/Python/2.7/site-packages (from traitlets>=4.2->ipython) Requirement already satisfied: ipython-genutils in /Library/Python/2.7/site- packages (from traitlets>=4.2->ipython) SF55M:~ 212580378$ ipython Python 2.7.10 (default, Feb 7 2017, 00:08:15) Type "copyright", "credits" or "license" for more information. IPython 5.4.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: Do you really want to exit ([y]/n)? SF55M:~ 278$ 

Acabo de instalarlo usando easy_install

Por ejemplo: $ sudo easy_install networkx

    Intereting Posts