Estoy tratando de actualizar setuptools. Bueno, en realidad estoy tratando de actualizar ansible pero tratando de actualizar setuptools and fallando. Tratando de hacer yo también falla. Incluso tratando de desinstalar falla

$ sudo -H pip install --upgrade setuptools
Collecting setuptools
  Using cached setuptools-18.4-py2.py3-none-any.whl
Installing collected packages: setuptools
  Found existing installation: setuptools 1.1.6
    Uninstalling setuptools-1.1.6:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/commands/install.py", line 311, in run
    root=options.root_path,
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/req/req_set.py", line 640, in install
    requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/req/req_install.py", line 716, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/req/req_uninstall.py", line 125, in remove
    renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip-7.1.2-py2.7.egg/pip/utils/__init__.py", line 315, in renames
    shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 299, in move
    copytree(src, real_dst, symlinks=True)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 208, in copytree
    raise Error, errors
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/__init__.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib/markers.pyc'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib', "[Errno 1] Operation not permitted: '/tmp/pip-OyTXsR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib'")]

No tengo la menor idea de lo que está mal. Buscar en todos los archivos en /System/Library/Frameworks/Python.framework/Versions/2.7/ y debajo de cada archivo es de titularidad de root:wheel

¿Cómo puedo solucionarlo?

  • No tengo una solución, pero tengo una explicación: es probablemente debido a la nueva la Integridad del Sistema de Protección. pip está tratando de modificar las cosas donde no está permitido, incluso con sudo. Consulte esta pregunta. No he tomado el tiempo para lidiar con esto. El --user opción pip es probablemente lo que me gustaría estudiar. Si usted encuentra una solución práctica a la «actualización» de todo, por favor compartir!!!
  • Me estoy poniendo ipdb error, el cual está vinculado a setuptools. La actualización de setuptools no funciona. Funciona con --user=python pero no corrige la ipdb error todavía.
InformationsquelleAutor gman | 2015-10-20

3 Comentarios

  1. 186

    Esto sucede debido a la Integridad del Sistema de Protección incorporado en OS X El Capitan.

    La adición de --user python para el comando permitido realizar este trabajo.

    En otras palabras

    pip install --upgrade setuptools --user python
    • pip (a diferencia de easy_install) no requiere sudo, ya que permite que se utilice python usuario, de hecho estoy seguro que funciona.
    • Fregué demasiadas opciones para la solución a este sencillo…
    • También trabaja en CentOS 7 en el interior de un contenedor Docker. Estaba fallando por alguna razón (aunque el mismo programa de instalación ha funcionado sin este paso, antes de Mayo de 2016…)
    • Yo no podía llegar a trabajar, y no entiendo cómo la opción –user se supone que funciona. Lo que funcionó para mí fue desactivar la Integridad del Sistema de Protección temporal, mientras que la actualización de setuptools (en relación con la instalación de ipython) y, a continuación, volver a habilitar después. Para hacer esto: arrancar en modo de recuperación (cmd+I), en el lanzamiento de la terminal y escribe csrutil disable. Reinicio, y después de la actualización, reinicie en modo recovery y entrar csrutil enable. Después de un reinicio, ipython siguió trabajando muy bien para mí.
    • Puede ejecutar este comando correctamente, pero no hay actualización. La salida se parece a esto: Collecting setuptools Using cached setuptools-28.2.0-py2.py3-none-any.whl Requirement already up-to-date: python in /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload Installing collected packages: setuptools Successfully installed setuptools-1.1.6
    • No me funciona wither en la misma salida que @diidu
    • Finalmente fui capaz de conseguir cosas de trabajo, siguiendo las instrucciones dadas aquí: apple.stackexchange.com/questions/209572/…
    • Este fijo que funcionó para mí cuando me encontré con un error de instalación de paramiko.
    • Trabajo después de la adición –usuario de python, puede alguien elaborado por qué funciona?
    • ella le dice a python para usar el «python» el usuario», para que los archivos necesarios están asignados. tal vez de lo contrario, se intenta utilizar el usuario actualmente conectado para la operación.

  2. 2

    Resumen

    El problema está en conflicto librerías de Python, combinado con la Integridad del Sistema de Protección (SIP) en Mac OS, que protege el sistema de librerías de Python.

    La mejor solución, en mi opinión, es desinstalar y volver a instalar su propia instalación de Python y mantener separadas a las librerías de Python proporcionada por Mac OS, los cuales están protegidos por la SIP.

    Estoy a favor de este a la desactivación de SIP como espero que SIP a ser una parte de cualquier futuro Mac OS libera y SIP no es la causa aquí, sólo expone el problema de conflicto en las librerías de Python.

    Detalles

    También he tenido este problema tratando de instalar ansible.

    Mi problema comenzó cuando he seguido el ansible instrucciones de instalación para Mac OS, que es para instalar a través de la pip y para instalar pip con easy_install como se describe en Las Versiones Más Recientes A Través De Pip

    Problema es que al instalar pip de esta manera, el easy_install es el Mac OS siempre easy_install en /usr/bin/easy_install pero se escribe a la easy-install.pth archivo en /Library/Python/2.7/site-packages/easy-install.pth y que las referencias del archivo Mac OS proporciona librerías de Python.

    Posteriormente la instalación de ansible con pip install ansible, a continuación, informa de que el setuptools requisito es satisfecho por el Mac OS proporciona biblioteca de Python en /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

    Ansible requiere setuptools pero no especifica una versión. Otro paquete dependiente, paramiko, requiere de setuptools >= 11.3, pero esto no parece ser activada cuando la instalación de ansible a través de pip. Cuando intenta ejecutar el ansible, aunque se queja de que el programa de instalación de herramientas es 1.1.6 Esta es la versión de setuptools de Mac OS, y ahora está protegida por la SIP, por lo que no puede ser actualizado.

    Lugar de deshabilitar SIP, he arreglado esto desinstalación de mi local de Python como se insinúa en https://docs.python.org/2.7/using/mac.html#getting-and-installing-macpython
    y, a continuación, descargar e instalar de nuevo.

    Si usted está preocupado acerca de la rm, puede mv en lugar

    Para desinstalar hice

    sudo rm -rf /Library/Python
    sudo rm -rf /Applications/Python\ 2.7/
    sudo rm /usr/local/bin/ansible  # executable
    sudo rm /usr/local/bin/python*  # symlinks to /Library/Python/2.7
    sudo rm /usr/local/bin/easy_install*
    # and so on for references to /Library/Python/2.7 in /usr/local/bin

    Luego he descargado el 2.7.13 paquete de instalación para Mac OS X a partir de https://www.python.org/downloads/
    y lo instaló.

    Esta instalado en un local de python y pip en /Library/Frameworks/Python.framework/Versions/2.7 y enlaces simbólicos en /usr/local/bin así como anteponiendo /Library/Frameworks/Python.framework/Versions/2.7 a mi $PATH. Esto mantiene todo por separado desde el Mac OS proporcionan las bibliotecas en /System/Library/Frameworks/Python.framework y /usr/bin
    por lo que me sale

    which pip
    /Library/Frameworks/Python.framework/Versions/2.7/bin/pip

    Luego de instalar ansible con pip install ansible

    Luego cuando ejecuto which ansible puedo obtener

    /Library/Frameworks/Python.framework/Versions/2.7/bin/ansible

    y en pip list

    setuptools (28.8.0)
    six (1.10.0)

    y ansible ahora trabaja para mí, porque el Mac OS librerías de Python no hace referencia a la nueva instalación.

    Tenga en cuenta que debido a que el instalador de configuración $PATH, which python es ahora /Library/Frameworks/Python.framework/Versions/2.7/bin/python y /usr/local/bin/python es un enlace simbólico a este.

    Si desea que el sistema de Python que usted tendrá que usar /usr/bin/python o cambiar el $PATH

  3. 1

    La respuesta es que no se puede actualizar setuptools en OSX para la fábrica de python que se incluye con el sistema operativo. La razón es que los archivos en /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python no puede ser eliminada o modificada por el usuario. No sólo el usuario normal, pero incluso si usted tiene permisos de root, usted no será capaz de modificar los archivos.

    Asegúrese de que usted puede utilizar otros métodos para instalar una versión más reciente de setuptools, pero esto no invalida la configuración predeterminada del paquete del sistema. Lo que significa que si usted va la ruta sugerida de uso de la --user python bandera, o que usted elija para instalar sin raíz en ~/Library, no va a reemplazar el sistema de archivos de la versión.

    La razón o de la raíz son incapaces de modificar los valores predeterminados del sistema es debido a la SIP restricciones de permisos en El Capitan+. Puedes desactivar la SIP pero esto no se recomienda generalmente.

    Vez la única solución razonable es utilizar un python virtualenv.

Dejar respuesta

Please enter your comment!
Please enter your name here