Comment puis-je changer la version Python par défaut sur Snow Leopard?

27

J'ai récemment mis à niveau mon installation Mac OS X 10.5 Leopard vers 10.6 Snow Leopard, et avec cela est venue une version mise à niveau de Python, 2.6.1 (au lieu de 2.5.1). Maintenant, quand je tape pythondans le terminal, je reçois toujours

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

J'ai regardé /usr/bin/et trouvé que pour obtenir Python 2.6, je dois taper python2.6.

La question est: comment puis-je créer la pythonmappe de commande vers Python 2.6?

SBSTN
la source

Réponses:

21

C'est facile:

defaults write com.apple.versioner.python Version 2.6

Voir man pythonpour une explication complète d'Apple.

En outre, un problème: assurez-vous que vous exécutez le Python fourni avec votre ordinateur et pas un autre que vous avez installé. Pour ce faire, tapez which pythonà l'invite de commande. Il devrait pointer vers /usr/bin/python. Je ne mentionne cela que parce que ma valeur par défaut est 2,6 sous Snow Leopard (elle était de 2,5 lorsque j'utilisais Leopard). Donc, le fait que vous obteniez 2.5 peut indiquer qu'il y a quelque chose d'autre sur votre chemin.

Mise à jour

Pour répondre aux commentaires ci-dessous:

Cela ne fait pas ce que les gens demandent.

C'est le cas pour moi, sous OS X 10.8.2. Après cela defaults write com.apple.versioner.python Version 2.6, la version par défaut de Python est en effet 2.6. (Et de même après être revenu à 2.7.)

Cela est vrai que je lance pythondirectement ou que j'utilise un script exécutable commençant par #!/usr/bin/env python—Je reçois la version attendue de Python.

Cela ne résout pas le lien symbolique dans /System/Library/Frameworks/Python.framework/Versions où Current pointe sur 2.7 ce qui peut causer des problèmes (car il est toujours dans sys.path avec 2.6!)

En effet, il ne corrige pas ce lien symbolique.

Cependant, exécutez un court script qui print()est le sys.path(et au moins sur ma configuration relativement par défaut) les répertoires de la bibliothèque 2.6 sont sur le chemin et les répertoires 2.7 ne sont pas sur le chemin. Le Currentrépertoire lié symboliquement n'est pas non plus sur le chemin. Cela ne devrait donc pas être un problème pour la plupart des scripts.

Cependant, il est possible - non testé - que le Currentlien symbolique soit utilisé par easy_installou pip. Cela causerait des problèmes. Il semble que le lien symbolique ne soit pas mis à jour lorsque vous mettez à jour la version Python.

Nate
la source
3
Tu avais raison. J'avais installé MacPython il y a longtemps et cela a foiré ma variable PATH si pythonindiquée /Library/Frameworks/Python.framework/Versions/Current/bin. Naturellement, cela n'a pas été mis à niveau vers 2.6. J'ai donc remplacé ma variable PATH par celle que j'ai trouvée par défaut sur Google et je vais maintenant supprimer MacPython de mon système.
SBSTN
@SBSTN J'ai le même problème (chemin python pointant vers /Library/Frameworks/Python.framework/Versions/Current/bin) Comment puis-je changer cela?
Zach
Ne fonctionne pas avec Xcode4 car il n'y a plus de / Library / Frameworks / Python * ni / usr / bin / python ne pointe ailleurs. Des idées? MacPorts serait une solution mais je ne veux pas l'installer.
Alex
J'ai installé Xcode 4 et cela fonctionne toujours comme décrit. /usr/bin/pythonest un exécutable, pas un lien. /usr/bin/python2.6est un lien qui pointe vers ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6. Étant donné que l'exécutable Python est /System/Libraryprésent, il devrait être disponible, que la version de Xcode soit installée ou non.
Nate
Cela ne fait pas ce que les gens demandent. Je ne sais pas pourquoi c'est la réponse.
010110110101
12

Je suggère d'utiliser des ports mac ...

Il existe un package appelé python_select qui permet d'utiliser des pythons en parallèle. Installez donc d'abord les ports mac s'ils ne sont pas déjà installés.

Installez d'abord le paquet python_select:

sudo port install python_select

Déjà maintenant, vous pouvez vérifier quelles distributions python sont disponibles sur votre système. Lancez simplement la commande:

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

Dans mon cas , il imprime au moins la version python qui vient par défaut avec Snow Leopard: python26-apple.

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

affiche la version actuellement sélectionnée, par exemple python26-apple. Donc, vous voyez, ce package fonctionne bien avec Mac. Pour plus de problème d'options

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

Ensuite, vous pouvez rechercher la version python disponible dans le référentiel des ports:

port search python

Cela produira une longue liste de pythons disponibles.

Pour installer les packages souhaités, par exemple python 2.4, exécutez:

sudo port install python24

Maintenant, le python_select -saffiche également le python fraîchement installé. Pour passer au problème python 2.4:

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

Cette commande est persistante entre les shells.

ovanes
la source
5

En supposant que vous utilisez bash, tapez:

% type -a python

Cela vous montrera tous les exécutables "python", les alias, les commandes internes du shell (probablement aucun) ou les fonctions bash dans votre PATH.

Cela devrait vous aider à mieux identifier ce qui se passe ici.

Doug Harris
la source
3

Vous souhaitez créer un lien symbolique vers la version souhaitée.

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

Cela supprime le pointeur actuel sur votre version Python par défaut et le définit sur votre version 2.6.

curieuse
la source
1
C'est similaire à ce que j'ai fait. Mais à la place, j'ai mis le lien dans / usr / bin et je l'ai appelé "python" (en remplaçant l'ancien exécutable "python" qu'Apple y avait mis). Donc: sudo ln -s /path/to/2.7 /usr/bin/python. C'est ainsi que cela se fait sous Linux et c'est tout à fait logique.
Nacht
0

Pas idéal (IMO), mais cela a corrigé toutes les applications à la recherche pythondans mon /usr/local/bin/.

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

Bien sûr, après avoir installé la dernière version de Python.

AGDM
la source
c'est vraiment une mauvaise idée. L'utilisation du lien symbolique peut être comprise, mais la copie de fichiers binaires dans les deux sens n'est PAS une bonne idée.
Jakuje
Compris, je veux juste taper python dans le terminal et le faire pointer vers Python3.x ... pas trop tard pour corriger cela correctement.
AGDM