Cómo actualizar la versión de Python en OSX

Una de las cosas que no llego a comprender es la rigidez que presenta Apple en algunas ocasiones cara a los usuarios más avanzados del sistema operativo OSX. El interprete de Python viene instalado por defecto en nuestros Mac con una versión 2.7.X por lo que si queremos actualizar Python en OSX a una versión 3.x no lo tenemos nada fácil.

Dado que Apple no lo actualiza de forma automática, en este nuevo tutorial veremos todos los pasos necesarios para actualizar la versión de Python que viene por defecto instalada en nuestros Mac.

primer programa en PythonPaso 1. Instalar la última versión de Python en OSX

  • Nos vamos a python.org y buscamos la versión 3.x mas reciente en esta Web.
  • Abrimos el fichero DMG y ejecutamos el programa de instalación (Python.mpkg)
  • Esto nos instalará la versión de Python en /Library/Frameworks/Python.framework
  • Tendremos que asegurarnos que no existan otras versiones de Python ya instaladas ya que puede dar lugar a incompatibilidades no muy agradables.
  • Nuestro Mac sigue ejecutando el ejecutable python 2.X en el directorio /usr/bin/python, por lo que tendremos que hacer algunos pasos adicionales para actualizar realmente Python en el sistema.

¡Importante! Antes de continuar con los siguientes pasos, los usuarios de OSX el Capitan tendremos que deshabilitar SIP (System Integrity Protector). Para ello:

  • Reiniciamos en Modo Recuperación (presionando Cmd+R en el arranque) y accedemos al terminal.

  • En el terminal, ejecutamos el siguiente comando: csrutil disable

  • Reiniciamos el Mac y realizamos los pasos del 2 en adelante de este tutorial

  • Necesitaremos nuevamente reiniciar en Modo Recuperación, abrir el terminal y escribir el siguiente comando: csrutil enable para volver a habilitar SIP.

Paso 2. Mover Python al directorio correcto

  • Para evitar posibles incompatibilidades y problemas borraremos del sistema la version «antigua» 2.7 que tenemos instalada ejecutando el comando rm de la siguiente manera:

$ sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7

  • Movemos la instalación de Python 3.X al directorio correcto. En mi caso he instalado la 3.5 por lo que ejecutaremos el comando mv como sigue a continuación:

$ sudo mv /Library/Frameworks/Python.framework/Versions/3.5 /System/Library/Frameworks/Python.framework/Versions

Paso 3. Reparar el grupo

  • Configuramos el grupo a wheel que es el mismo que tienen las versiones previas de Python en nuestro equipo:

$ sudo chown -R root:wheel /System/Library/Frameworks/Python.framework/Versions/3.5

Paso 4. Actualizar el enlace Current

  • Existe un enlace simbólico del sistema que necesitamos actualizar para que todo vuelva a funcionar correctamente. Para hacer esto primero lo elmiminamos con el comando rm de la siguiente manera:

$ sudo rm /System/Library/Frameworks/Python.framework/Versions/Current

  • Después lo volvemos a crear mediante el comando ln para que «apunte» a la versión 3.5 de Python que es la que hemos instalado nosotros:

$ sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5 /System/Library/Frameworks/Python.framework/Versions/Current

Paso 5. Reparar el directorio /usr/bin

  • Los archivos ejecutables pydoc, python, pythonw y python-config no están vinculados al directorio de la instalación de Python que hemos realizado pero deben residir en /usr/bin. Si no actualizamos estos ficheros y por ejemplo ejecutamos el comando python en el terminal, se va a seguir ejecutando la versión antígua 2.7.X.

  • Por lo tanto, vamos a eliminar los antiguos archivos ejecutables de Python con el comando rm

$ sudo rm /usr/bin/pydoc
$ sudo rm /usr/bin/python
$ sudo rm /usr/bin/pythonw
$ sudo rm /usr/bin/python-config

  • Vamos a reemplazar los archivos ejecutables por enlaces simbolicos a los nuevos ejecutables recien instalados con el comando ln

$ sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/pydoc3 /usr/bin/pydoc
$ sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/python3 /usr/bin/python
$ sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/pythonw3 /usr/bin/pythonw
$ sudo ln -s /System/Library/Frameworks/Python.framework/Versions/3.5/bin/python-config3 /usr/bin/python-config

Paso 6. Actualizar el fichero .bash_profile

  • Usaremos nuestro editor de texto favorito para modificar el fichero oculto ~/.bash_profile. Si queremos tener la posibilidad de ejecutar las utilidades de Python como por ejemplo IDLE sin escribir la ruta (path) cada vez, editaremos el PATH para Python de la siguiente manera:

Setting PATH for Python 3.5
The orginal version is saved in .bash_profile.pysave
PATH="/System/Library/Frameworks/Python.framework/Versions/3.5/bin:$ {PATH}"
export PATH

  • Si todo lo anterior lo hemos realizado correctamente, cuando ejecutemos el comando python en la terminal de OSX veremos que ahora ya está usando la versión 3.5 de Python en OSX que hemos instalado. La siguiente imagen muestra el aspecto que presenta ahora terminal:

Python 3 por defecto en OSX

Enlaces interesantes que acompañan a este artículo:

Espero que os haya gustado el tutorial sobre cómo actualizar Python en OSX. En ese caso solo os pido que lo compartáis con vuestros amigos en redes sociales para que pueda llegar a más gente que seguro que está interesado en leerlo. Como siempre, muchas gracias por vuestra atención y nos leemos en un próximo artículo!!

Adiós, os!!

27 comentarios en “Cómo actualizar la versión de Python en OSX”

  1. Pingback: Instalar el gestor de paquetes pip para Python

  2. Buenas! De antemano gracias por el tutorial, todo me ha salido a la perfección salvo por unos detalles. Antes que nada comentarte que soy principiante en esto de Python. En la consola me aparece perfecto la ultima version de Python instalado 3.5.2 y hasta ahi todo bien. Cuando quiero ejecutar pip , me dice que no es un archivo existente en la consola. si pongo toda la ruta /System/Library/….. si me lo ejecuta. Quisiera solucionar primero ese inconveniente. Lego usando toda la ruta para instalar virtualenv con pip me dice lo siguiente: Could not find a version that satisfies the requirement virtualemv (from versions: )
    No matching distribution found for virtualemv . Bueno si puedes darme una mano te agradecería ya que por lo que veo me encanta el lenguaje pero no puedo terminar de instalarlo, Por cierto trabajo desde Mac. Gracias

  3. HOla ! un tutorial genial !!! me ayudo mucho, pero me dejo una secuela.. cada vez que entro a la terminal de Mac me sale -bash: (lo q sea q escriba): command not found.
    como puedo solucionar este problema.
    Gracias

  4. Hola, actualicé my python 2.7 a 3.6 y todo muy bien, hasta que queria abrir mi Xcode, y cuando lo abria me mandaba el siguiente mensaje
    «The plug-in or one of its prerequisite plug-ins may be missing or damaged and may need to be reinstalled.»
    ¿Sabrás cómo arreglarlo?

    1. Hola Jorge!! Creo que si actualizas Python no se puede usar después Xcode. Hay una forma de tener dos instalaciones y modificar el path para que Xcode siga tirando de la versión antigua pero ahora mismo no he tenido tiempo de investigar. Si te parece, los avances que tengamos los comentamos por aquí.

      Muchas gracias por seguir mi trabajo. Estamos en contacto.

      Un abrazo,
      JM

        1. Hola Gustavo! Ahora no puedo probar eso. A ver si te puede ayudar alguno de los lectores de la web. Siento las molestias.

          Estamos en contacto para cualquier otra cosa que te pueda ayudar.

          Muchas gracias por seguir mi trabajo

          Un saludo,
          JM

  5. Hola, ayuda con los paso de mover python al directivo correcto , trato de moverlo y me aparece esto «sudo mv /Library/Frameworks/Python.framework/Versions/3.6 /System/Library/Frameworks/Python.framework/Versions
    mv: rename /Library/Frameworks/Python.framework/Versions/3.6 to /System/Library/Frameworks/Python.framework/Versions/3.6: Operation not permitted» , cualquier sugerencia sera de mucha ayuda , estoy empezando esto :/

  6. Hola José,
    estoy intentando eliminar el 2.7 según lo que indicas pero me sale lo siguiente:

    iMac-de-Javier:~ javier$ sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7
    Password:
    override rw-r–r– root/wheel restricted,compressed for /System/Library/Frameworks/Python.framework/Versions/2.7/_CodeSignature/CodeResources? y
    rm: /System/Library/Frameworks/Python.framework/Versions/2.7/_CodeSignature/CodeResources: Operation not permitted
    override rwxr-xr-x root/wheel restricted for /System/Library/Frameworks/Python.framework/Versions/2.7/_CodeSignature? y
    rm: /System/Library/Frameworks/Python.framework/Versions/2.7/_CodeSignature: Operation not permitted
    y así en un montón de archivos. No tengo ni idea de cómo conseguirlo.
    Saludos

    1. Hola Javier!

      Al final desistí de intentar actualizar Python en macOS ya que Apple no lo pone nada fácil. Cuando necesito hacer algo, tiro de máquina virtual y listo. De todas formas si me entero de alguna novedad te comento.

      Muchas gracias por seguir mi trabajo!

      Un saludo,
      JM

  7. Buenas tardes,
    He seguido tus instrucciones y no me funcianan ya en el primer paso.
    Sigo la primera instruccion:
    Instalar la última versión de Python en OSX LO hago y sin problema
    Paso 2. Mover Python al directorio correcto:
    sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7
    OK este paso sin problema
    sudo mv /Library/Frameworks/Python.framework/Versions/3.5 /System/Library/Frameworks/Python.framework/Versions
    ME DA EL SIGUIENTE ERROR:
    mv: rename /Library/Frameworks/Python.framework/Versions/3.5 to /System/Library/Frameworks/Python.framework/Versions/3.5: No such file or directory
    Y PYTHON DEJA DE FUNCIONAR
    A ver si me puedes ayudar

  8. Saludos amigo me fue muy útil en mi iMac pero me gustaría saber si en mi laptop que tengo instalado Ubuntu 16.04 podría hacer algo igual ya que tengo tres versiones de python y quiero por defecto la 3.7 :
    fliamh@MHDev:~$ python3 –version
    Python 3.5.2
    fliamh@MHDev:~$ python3.7 –version
    Python 3.7.0
    fliamh@MHDev:~$ python –version
    Python 2.7.12

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio