Como posso alterar a versão padrão do Python no Snow Leopard?

27

Recentemente, atualizei minha instalação do Mac OS X 10.5 Leopard para 10.6 Snow Leopard e, com isso, uma versão atualizada do Python, 2.6.1 (em vez se 2.5.1). Agora, quando digito pythono Terminal, ainda recebo

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

Eu olhei /usr/bin/e descobri que para obter o Python 2.6 eu tenho que digitar python2.6.

A pergunta é: como faço pythonpara mapear o comando para o Python 2.6?

SBSTN
fonte

Respostas:

21

É fácil:

defaults write com.apple.versioner.python Version 2.6

Veja man pythonuma explicação completa da Apple.

Além disso, uma dica: verifique se você está executando o Python que acompanha o seu computador e não outro que você instalou. Faça isso digitando which pythonno prompt de comando. Deve apontar para /usr/bin/python. Eu apenas mencionei isso porque meu padrão é 2.6 no Snow Leopard (era 2.5 quando eu estava usando o Leopard). Portanto, o fato de você estar recebendo o 2.5 pode indicar que há algo mais no seu caminho.

Atualizar

Para abordar os comentários abaixo:

Isso não faz o que as pessoas estão perguntando.

Faz para mim, no OS X 10.8.2. Depois de fazer defaults write com.apple.versioner.python Version 2.6, a versão padrão do Python é de fato 2.6. (E da mesma forma depois de voltar para 2.7.)

Isso é verdade, seja eu executado pythondiretamente ou usando um script executável começando com #!/usr/bin/env python- eu recebo a versão esperada do Python.

Isso não resolve o link simbólico em /System/Library/Frameworks/Python.framework/Versions em que Current aponta para 2.7, o que pode causar problemas (porque ele ainda está no sys.path com 2.6!)

Na verdade, ele não corrige esse link simbólico.

No entanto, executar um pequeno script que print()é o sys.pathe (pelo menos na minha configuração relativamente padrão) os 2,6 diretórios de bibliotecas estão no caminho e os 2,7 dirs são não no caminho. O Currentdiretório com links simbólicos também não está no caminho. Portanto, não deve ser um problema para a maioria dos scripts.

No entanto, é possível - ainda não testado - que o Currentlink simbólico seja usado por um easy_installou outro pip. Isso causaria problemas. Com certeza parece um bug que o link simbólico não é atualizado quando você atualiza a versão do Python.

Nate
fonte
3
Você estava certa. Há muito tempo, instalei o MacPython e isso estragou minha variável PATH, assim pythonapontada /Library/Frameworks/Python.framework/Versions/Current/bin. Naturalmente, isso não foi atualizado para o 2.6. Substituí minha variável PATH pela padrão que encontrei no Google e agora removo o MacPython do meu sistema.
SBSTN 04/09/09
@ SBSTN Eu tenho o mesmo problema (caminho do python apontando para /Library/Frameworks/Python.framework/Versions/Current/bin) Como eu altero isso?
Zach
Não funciona com o Xcode4, pois não há mais / Library / Frameworks / Python * nem / usr / bin / python aponta para outro lugar. Alguma ideia? MacPorts seria uma solução, mas eu não quero instalá-lo.
1111 Alex
Instalei o Xcode 4 e ainda funciona como descrito. /usr/bin/pythoné um executável, não um link. /usr/bin/python2.6é um link que aponta para ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6. Dado que o executável Python está /System/Librarynele, ele deve estar disponível independentemente de / qual versão do Xcode está instalada.
Nate
Isso não faz o que as pessoas estão perguntando. Não sei por que é a resposta.
010110110101
12

Eu sugeriria o uso de portas mac ...

Existe um pacote chamado python_select que permite o uso de pythons em paralelo. Então, primeiro instale as portas mac, se ainda não estiverem instaladas.

Primeiro instale o pacote python_select:

sudo port install python_select

Agora você já pode verificar quais distribuições python estão disponíveis no seu sistema. Basta emitir o comando:

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

No meu caso, impresso na versão menos python que vem por padrão com o Snow Leopard: python26-apple.

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

mostra a versão atualmente selecionada, por exemplo python26-apple. Como vê, este pacote brinca muito bem com o Mac. Para mais questão de opções

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

Então você pode procurar a versão python disponível no repositório de portas:

port search python

Isso produzirá uma longa lista de pítons disponíveis.

Para instalar os pacotes desejados, por exemplo, python 2.4, execute:

sudo port install python24

Agora, também python_select -sserá mostrado o python recém-instalado. Para mudar para o problema do python 2.4:

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

Este comando é persistente entre os shells.

ovanes
fonte
5

Supondo que você esteja usando o bash, digite:

% type -a python

Isso mostrará a você todos os executáveis ​​"python", aliases, funções internas do shell (provavelmente nenhuma) ou funções bash no seu PATH.

Isso deve ajudá-lo a identificar melhor o que está acontecendo aqui.

Doug Harris
fonte
3

Você deseja criar um link simbólico para a versão desejada.

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

Isso remove o ponteiro atual para sua versão padrão do Python e o define para sua versão 2.6.

curioso
fonte
1
Isso é semelhante ao que eu fiz. Mas, em vez disso, coloquei o link em / usr / bin e o chamei de "python" (substituindo o antigo executável "python" que a Apple colocou lá). Assim: sudo ln -s /path/to/2.7 /usr/bin/python. É assim que é feito no Linux e faz sentido.
Nacht
0

Não é o ideal (IMO), mas isso corrigiu todos os aplicativos procurando pythonno meu /usr/local/bin/.

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

Claro, depois de instalar a versão mais recente do Python.

AGDM
fonte
isso é realmente uma péssima idéia. O uso do link simbólico pode ser entendido, mas copiar os binários para frente e para trás NÃO é uma boa idéia.
Jakuje
Entendido, eu só quero digitar python no terminal e apontar para Python3.x ... não é tarde demais para corrigir isso corretamente.
AGDM