web-dev-qa-db-fra.com

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

J'ai récemment mis à niveau mon installation Mac OS X 10.5 Leopard vers 10.6 Snow Leopard, avec une version mise à niveau de Python, 2.6.1 (au lieu de 2.5.1). Maintenant, quand je tape python dans 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é dans /usr/bin/ et constaté que pour obtenir Python 2.6, je dois taper python2.6.

La question est la suivante: Comment mapper la commande python vers Python 2.6?

27
SBSTN

C'est facile:

defaults write com.Apple.versioner.python Version 2.6

Voir man python pour une explication complète d'Apple.

En outre, un problème: assurez-vous que vous utilisez le Python fourni avec votre ordinateur et non un autre que vous avez installé. Pour ce faire, tapez which python à l'invite de commande. Il devrait pointer sur /usr/bin/python. Je mentionne cela uniquement parce que ma valeur par défaut est 2.6 sous Snow Leopard (c’était la version 2.5 lorsque j’utilisais Leopard). Donc, le fait que vous obteniez 2.5 peut indiquer qu’il ya autre chose sur votre chemin.

Mettre à jour

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 avoir exécuté defaults write com.Apple.versioner.python Version 2.6, la version par défaut de Python est bien la 2.6. (Et de même après être revenu à 2.7.)

Cela est vrai que j'exécute directement python 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 vers 2.7, ce qui peut poser problème (car il se trouve toujours dans le sys.path avec 2.6!).

En effet, il ne résout pas ce lien symbolique.

Cependant, exécutez un court script qui print()s le sys.path et (du moins sur ma configuration par défaut) les répertoires de la bibliothèque 2.6 sont sur le chemin et les répertoires 2.7 sont pas sur le chemin. Le répertoire Current ne figure pas non plus sur le chemin. Cela ne devrait donc pas poser de problème pour la plupart des scripts.

Cependant, il n’est pas possible, sans avoir été testé, que le lien symbolique Current soit utilisé par easy_install ou pip. Cela causerait des problèmes. Il semble évident que le lien symbolique n’est pas mis à jour lorsque vous mettez à jour la version Python.

21
Nate

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

Il existe un paquetage appelé python_select qui permet d’utiliser des pythons en parallèle. Donc, installez d’abord les ports mac s’ils ne sont pas déjà installés.

Commencez par installer le paquet python_select:

Sudo port install python_select

Vous pouvez d'ores et déjà vérifier quelles distributions Python sont disponibles sur votre système. Il suffit d'envoyer la commande:

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

Dans mon cas, il a au moins imprimé la version python qui est fournie 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 paquet joue bien avec Mac. Pour plus d'options

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

Ensuite, vous pouvez rechercher la version disponible de Python 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écuter:

Sudo port install python24

Maintenant, le python_select -s affichera é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.

12
ovanes

En supposant que vous utilisez bash, tapez:

% type -a python

Cela vous montrera tous les exécutables "python", les alias, les fonctions intégrées du shell (probablement aucune) ou les fonctions bash de votre PATH.

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

5
Doug Harris

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

3
curious

Pas idéal (IMO), mais cela corrigeait toutes les applications à la recherche de python dans 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.

0
AGDM