Wie kann ich die Standard-Python-Version unter Snow Leopard ändern?

27

Ich habe kürzlich meine Mac OS X 10.5 Leopard-Installation auf 10.6 Snow Leopard aktualisiert und mit dieser Version kam eine aktualisierte Version von Python 2.6.1 (statt 2.5.1). Jetzt, wenn ich pythondas Terminal eintippe, bekomme ich immer noch

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

Ich habe nachgesehen /usr/bin/und festgestellt, dass ich eingeben muss , um Python 2.6 zu erhalten python2.6.

Die Frage ist: Wie mache ich die pythonBefehlszuordnung zu Python 2.6?

SBSTN
quelle

Antworten:

21

Es ist einfach:

defaults write com.apple.versioner.python Version 2.6

Siehe man pythonfür eine vollständige Erklärung von Apple.

Außerdem gilt: Stellen Sie sicher, dass Sie das mit Ihrem Computer gelieferte Python ausführen und nicht ein anderes, das Sie installiert haben. Geben Sie dazu which pythonan der Eingabeaufforderung Folgendes ein. Es sollte darauf hinweisen /usr/bin/python. Ich erwähne dies nur, weil mein Standard unter Snow Leopard 2.6 ist (es war 2.5, als ich Leopard verwendete). Die Tatsache, dass Sie 2.5 erhalten, kann also darauf hindeuten, dass sich auf Ihrem Weg noch etwas anderes befindet.

Aktualisieren

Um Kommentare unten zu adressieren:

Das macht nicht was die Leute fragen.

Das ist bei mir in OS X 10.8.2 der Fall. Danach defaults write com.apple.versioner.python Version 2.6ist die Standardversion von Python in der Tat 2.6. (Und ebenfalls nach dem Wechsel zurück zu 2.7.)

Dies gilt unabhängig davon, ob ich pythondirekt starte oder ein ausführbares Skript verwende, das mit " #!/usr/bin/env pythonIch erhalte die erwartete Version von Python" beginnt .

Dies löst nicht den Symlink in /System/Library/Frameworks/Python.framework/Versions, wo Current auf 2.7 zeigt, was zu Problemen führen kann (da es sich mit 2.6 noch im sys.path befindet!)

In der Tat wird dieser Symlink nicht repariert.

Läuft jedoch ein kurzes Skript , das print()die s sys.pathund (zumindest auf meinem relativen Standard - Setup) die 2.6 Bibliotheksverzeichnisse sind auf dem Weg und die 2,7 dirs sind nicht auf dem Weg. Das Currentsymbolisch verknüpfte Verzeichnis befindet sich auch nicht im Pfad. Es sollte also für die meisten Skripte kein Problem sein.

Es ist jedoch möglich - noch nicht getestet -, dass der CurrentSymlink von easy_installoder verwendet wird pip. Das würde Probleme verursachen. Es scheint sicher ein Fehler zu sein, dass der Symlink nicht aktualisiert wird, wenn Sie die Python-Version aktualisieren.

Nate
quelle
3
Du hattest Recht. Ich hatte MacPython vor langer Zeit installiert und das hat meine PATH-Variable so verdorben, dass pythondarauf hingewiesen wurde /Library/Frameworks/Python.framework/Versions/Current/bin. Natürlich wurde das nicht auf 2.6 aktualisiert. Daher habe ich meine PATH-Variable durch die Standardvariable ersetzt, die ich bei Google gefunden habe, und entferne nun MacPython von meinem System.
SBSTN
@ SBSTN Ich habe das gleiche Problem (Python-Pfad zeigt auf /Library/Frameworks/Python.framework/Versions/Current/bin). Wie ändere ich das?
Zach
Funktioniert nicht mit Xcode4, da es kein / Library / Frameworks / Python * mehr gibt und / usr / bin / python nicht auf eine andere Stelle verweist. Irgendwelche Ideen? MacPorts wäre eine Lösung, aber ich möchte es nicht installieren.
Alex
Ich habe Xcode 4 installiert und es funktioniert immer noch wie beschrieben. /usr/bin/pythonist eine ausführbare Datei, kein Link. /usr/bin/python2.6ist ein Verweis auf ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6. Da die ausführbare Python-Datei enthalten ist /System/Library, sollte sie verfügbar sein, unabhängig davon, ob / welche Version von Xcode installiert ist.
Nate
Das macht nicht was die Leute fragen. Nicht sicher, warum es die Antwort ist.
010110110101
12

Ich würde vorschlagen, Mac-Ports zu verwenden ...

Es gibt ein Paket namens python_select, mit dem Pythons parallel verwendet werden können. Installieren Sie also zuerst die Mac-Ports, falls diese noch nicht installiert sind.

Installieren Sie zuerst das Paket python_select:

sudo port install python_select

Bereits jetzt können Sie überprüfen, welche Python-Distributionen auf Ihrem System verfügbar sind. Gib einfach den folgenden Befehl ein:

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

In meinem Fall gedruckt es mindestens Python - Version , die mit Snow Leopard standardmäßig kommt: python26-apple.

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

Zeigt die aktuell ausgewählte Version an, z python26-apple. Wie Sie sehen, funktioniert dieses Paket gut mit dem Mac. Weitere Optionen Problem

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

Dann können Sie im Ports-Repository nach der verfügbaren Python-Version suchen:

port search python

Dadurch wird eine lange Liste verfügbarer Pythons erstellt.

Um die gewünschten Pakete zu installieren, zB Python 2.4, führen Sie Folgendes aus:

sudo port install python24

Nun python_select -swird auch der frisch installierte Python angezeigt. So wechseln Sie zu Python 2.4:

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

Dieser Befehl bleibt zwischen Shells bestehen.

ovanes
quelle
5

Angenommen, Sie verwenden bash, geben Sie Folgendes ein:

% type -a python

Das zeigt Ihnen alle ausführbaren "Python" -Dateien, Aliase, eingebauten Shell-Funktionen (wahrscheinlich keine) oder Bash-Funktionen in Ihrem PATH.

So können Sie besser erkennen, was hier vor sich geht.

Doug Harris
quelle
3

Sie möchten einen Symlink zur gewünschten Version erstellen.

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

Dadurch wird der aktuelle Zeiger auf Ihre Standard-Python-Version entfernt und auf Ihre 2.6-Version gesetzt.

neugierig
quelle
1
Das ist ähnlich wie bei mir. Stattdessen legte ich den Link in / usr / bin und nannte ihn "Python" (überschreibe die alte ausführbare "Python" -Datei, die Apple dort abgelegt hat). Also: sudo ln -s /path/to/2.7 /usr/bin/python. Dies ist die Art und Weise, wie es unter Linux gemacht wird und es macht einfach Sinn.
Nacht
0

Nicht ideal (IMO), aber das behebt alle Apps, die pythonin meinem Browser gesucht werden /usr/local/bin/.

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

Natürlich nach der Installation der neuesten Python-Version.

AGDM
quelle
Das ist wirklich eine schlechte Idee. Die Verwendung von symlink kann verstanden werden, aber das Kopieren von Binärdateien hin und her ist keine gute Idee.
Jakuje
Verstanden, ich möchte nur Python in Terminal eingeben und es auf Python3.x verweisen lassen ... nicht zu spät, um dies richtig zu beheben.
AGDM