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.
Paso 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
python2.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+Ren el arranque) y accedemos al terminal.En el terminal, ejecutamos el siguiente comando:
csrutil disableReiniciamos 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 enablepara 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
rmde 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
mvcomo 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
wheelque 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
rmde la siguiente manera:
$ sudo rm /System/Library/Frameworks/Python.framework/Versions/Current
-
Después lo volvemos a crear mediante el comando
lnpara 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,pythonwypython-configno 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 comandopythonen 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 ejemploIDLEsin 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
pythonen 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:

Enlaces interesantes que acompañan a este artículo:
- Download the latest version for Mac OS X
- Do I need to install pip
- Pip (administrador de paquetes)
- PIP install and Python path
- Enlace simbólico
- Instalar el gestor de paquetes pip para Python
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!!

Pingback: Instalar el gestor de paquetes pip para Python
Gracias, fue de gran utilidad!!
Hola Daniel!! Me alegro mucho que te haya sido útil!! Muchas gracias por tu amable comentario!
Seguimos en contacto para lo que necesites….
Un abrazo,
JM
Excelente tutorial, super útil. Acabo de actualizar a 3.7. Gracias!
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
Hola Francisco!! Asegurate de seguir al pie de la letra todo el tutorial puesto que es un proceso complejo. Luego también te recomiendo que leas el artículo Instalar el gestor de paquetes pip para Python para que te quede claro el tema de pip. Si aún así no lo consigues, ponte nuevamente en contacto a ver qué podemos hacer. Ya me cuentas.
Seguimos en contacto para lo que necesites!
Un abrazo,
JM
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
Hola Luis! Es muy extraño lo que te está pasando. Si quieres envíame algún pantallazo para que vea el error y pueda intentar ayudarte.
Ya me cuentas. Seguimos en contacto
Un saludo,
JM
Hola de nuevo, te envié el pantallazo a tu twitter, gracias por la ayuda!
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?
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
¿Ya tendrá la solución para poder usar nuevamente XCode?
Gracias
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
En Mac os el capitan, en modo recuperación, no se puede acceder a Terminal.
Hola Diego! No puedo comprobar lo que me dices porque estoy en macOS Sierra. A ver si a algún lector le sucede y nos echa una mano.
Muchas gracias por seguir mi trabajo!
Un saludo,
JM
Hola, No puedo acceder a Terminal en modo recuperación, no hay manera. mi sist. OSX El Capitan
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 :/
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
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
Hola José, como haces eso de tiro de maquina virtual? Me podrias ayudar?
Gracias!
Hola Juan!
No sé muy bien a lo que te refieres. Concretame un poco mas porfa.
Un saludo,
JM
Gran aportación, gracias!
Hola Mario!
Gracias a ti por seguir mi trabajo!
Un saludo,
JM
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
Hola!! Si, creo que Apple ha cambiado la política y al final es complicado hacer que funcione la 3.5. De todas formas si me entero de algo te comento.
Te recomiendo que te suscribas a mi lista de correo para recibir un único correo semanal con todas las novedades que publico en la web. Te paso el link:
https://www.jmramirez.pro/newsletter/
Muchas gracias por seguir mi trabajo!!
Un saludo,
JM
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
Hola Luis!
Pues la verdad no he probado en Ubuntu. A ver si alguno de los lectores te puede echar una mano para tal fin.
Muchas gracias por seguir mi trabajo
Un saludo,
JM