¿Cómo puedo cambiar la versión predeterminada de Python en Snow Leopard?

27

Recientemente actualicé mi instalación de Mac OS X 10.5 Leopard a 10.6 Snow Leopard, y con eso vino una versión mejorada de Python, 2.6.1 (en cambio, si 2.5.1). Ahora, cuando escribo pythonen la Terminal, sigo recibiendo

Python 2.5.1 (r251:54869, Apr 18 2007, 22:08:04) 
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Miré /usr/bin/y encontré que para obtener Python 2.6 tengo que escribir python2.6.

La pregunta es: ¿Cómo hago que el pythoncomando se asigne a Python 2.6?

SBSTN
fuente

Respuestas:

21

Es fácil:

defaults write com.apple.versioner.python Version 2.6

Consulte man pythonpara obtener una explicación completa de Apple.

Además, un problema: asegúrese de estar ejecutando el Python que vino con su computadora y no otro que haya instalado. Haga esto escribiendo which pythonen su símbolo del sistema. Debe apuntar a /usr/bin/python. Solo menciono esto porque mi valor predeterminado es 2.6 en Snow Leopard (era 2.5 cuando estaba usando Leopard). Por lo tanto, el hecho de que esté obteniendo 2.5 puede indicar que hay algo más en su camino.

Actualizar

Para abordar los comentarios a continuación:

Esto no hace lo que la gente pregunta.

Lo hace para mí, en OS X 10.8.2. Después de hacerlo defaults write com.apple.versioner.python Version 2.6, la versión predeterminada de Python es de hecho 2.6. (Y del mismo modo después de volver a cambiar a 2.7.)

Esto es cierto si ejecuto pythondirectamente o si utilizo un script ejecutable que comienza con: #!/usr/bin/env pythonobtengo la versión esperada de Python.

Esto no resuelve el enlace simbólico en /System/Library/Frameworks/Python.framework/Versions donde Current apunta a 2.7, lo que puede causar problemas (¡porque todavía está en sys.path con 2.6!)

De hecho, no soluciona ese enlace simbólico.

Sin embargo, ejecute un script corto que sea print()el sys.pathy (al menos en mi configuración relativamente predeterminada) los directorios de la biblioteca 2.6 están en la ruta y los directorios 2.7 no están en la ruta. El Currentdirectorio simbólico tampoco está en la ruta. Por lo tanto, no debería ser un problema para la mayoría de los scripts.

Sin embargo, es posible, no he probado, que el Currentenlace simbólico sea utilizado por easy_installo pip. Eso causaría problemas. Seguro que parece un error que el enlace simbólico no se actualice cuando actualiza la versión de Python.

Nate
fuente
3
Usted tenía razón. Hace mucho tiempo instalé MacPython y eso estropeó mi variable PATH que pythonseñalé /Library/Frameworks/Python.framework/Versions/Current/bin. Naturalmente, eso no se actualizó a 2.6. Así que reemplacé mi variable PATH con la predeterminada que encontré en Google, y ahora eliminaré MacPython de mi sistema.
SBSTN
@SBSTN Tengo el mismo problema (la ruta de Python apuntando a /Library/Frameworks/Python.framework/Versions/Current/bin) ¿Cómo cambio esto?
Zach
No funciona con Xcode4 ya que ya no hay / Library / Frameworks / Python * ni / usr / bin / python apunta a ningún otro lado. ¿Algunas ideas? MacPorts sería una solución, pero no quiero instalarlo.
Alex
He instalado Xcode 4 y todavía funciona como se describe. /usr/bin/pythones un ejecutable, no un enlace. /usr/bin/python2.6es un enlace que apunta a ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6. Dado que el ejecutable de Python está en /System/Libraryél, debería estar disponible independientemente de si / qué versión de Xcode está instalada.
Nate
Esto no hace lo que la gente pregunta. No estoy seguro de por qué es la respuesta.
010110110101
12

Sugeriría usar puertos mac ...

Hay un paquete llamado python_select que permite usar pitones en paralelo. Por lo tanto, primero instale puertos mac si aún no está instalado.

Primero instale el paquete python_select:

sudo port install python_select

Ya puede verificar qué distribuciones de Python están disponibles en su sistema. Solo emita el comando:

port select --list python     (MacPorts 2.x)
python_select -l              (MacPorts 1.x)

En mi caso es impreso en la versión menos pitón que viene por defecto con Snow Leopard: python26-apple.

port select --show python     (MacPorts 2.x)
python_select -s              (MacPorts 1.x)

muestra la versión seleccionada actualmente, por ejemplo python26-apple. Como puede ver, este paquete funciona muy bien con Mac. Para más opciones problema

port select                   (MacPorts 2.x)
python_select -h              (MacPorts 1.x)

Luego puede buscar la versión de Python disponible en el repositorio de puertos:

port search python

Esto producirá una larga lista de pitones disponibles.

Para instalar los paquetes deseados, por ejemplo, Python 2.4, ejecute:

sudo port install python24

Ahora también python_select -sse mostrará el python recién instalado. Para cambiar al problema de Python 2.4:

sudo port select --set python python24  (MacPorts 2.x)
sudo python_select python24             (MacPorts 1.x)

Este comando es persistente entre los shells.

ovanos
fuente
5

Suponiendo que está usando bash, escriba:

% type -a python

Eso le mostrará todos los ejecutables, alias, construcciones de shell (probablemente ninguno) o funciones de bash en su RUTA.

Esto debería ayudarlo a identificar mejor lo que está sucediendo aquí.

Doug Harris
fuente
3

Desea crear un enlace simbólico a la versión deseada.

cd /Library/Frameworks/Python.framework/Versions 
sudo rm Current 
sudo ln -s /Library/Frameworks/Python.framework/Versions/2.6 Current

Esto elimina el puntero actual a su versión predeterminada de Python y lo establece en su versión 2.6.

curioso
fuente
1
Esto es similar a lo que hice. Pero en su lugar puse el enlace en / usr / bin y lo llamé "python" (anulando el antiguo ejecutable "python" que Apple puso allí). Por lo tanto: sudo ln -s /path/to/2.7 /usr/bin/python. Esta es la forma en que se hace en Linux y tiene sentido.
Nacht
0

No es ideal (IMO), pero esto solucionó todas las aplicaciones que buscaba pythonen mi /usr/local/bin/.

sudo cp /usr/local/bin/python3 /usr/local/bin/python

Por supuesto, después de instalar la última versión de Python.

AGDM
fuente
Esta es una muy mala idea. Se puede entender el uso del enlace simbólico, pero copiar binarios de ida y vuelta NO es una buena idea.
Jakuje
Entendido, solo quiero escribir python en la terminal y hacer que apunte a Python3.x ... no es demasiado tarde para solucionarlo correctamente.
AGDM