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

79527
SBSTN

Ich habe kürzlich meine Mac OS X 10.5 Leopard-Installation auf 10.6 Snow Leopard aktualisiert und damit eine aktualisierte Version von Python 2.6.1 (statt 2.5.1). Wenn ich jetzt pythondas Terminal eingebe, 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 schaute hinein /usr/bin/und stellte fest, dass ich, um Python 2.6 zu erhalten, tippen muss python2.6.

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

25

5 Antworten auf die Frage

21
Nate

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 haben Sie ein Problem: Stellen Sie sicher, dass Sie den Python ausführen, der mit Ihrem Computer geliefert wurde, und nicht einen anderen, den Sie installiert haben. Geben which pythonSie dazu die Eingabeaufforderung ein. Es sollte auf zeigen /usr/bin/python. Ich erwähne dies nur, weil mein Standard unter Snow Leopard 2.6 ist (als Leopard 2.5 verwendet wurde). Die Tatsache, dass Sie 2,5 erhalten, kann darauf hindeuten, dass etwas anderes auf Ihrem Weg ist.

Aktualisieren

So richten Sie Kommentare an:

Das tut nicht, was die Leute fragen.

In OS X 10.8.2. Danach defaults write com.apple.versioner.python Version 2.6ist die Standardversion von Python in der Tat 2.6. (Und ebenfalls nach dem Wechsel zu 2.7.)

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

Dies löst den Symlink in /System/Library/Frameworks/Python.framework/Versions nicht, wobei Current auf 2.7 zeigt, was Probleme verursachen kann (da es sich immer noch im sys.path mit 2.6 befindet!)

In der Tat wird der Symlink nicht behoben.

Allerdings läuft 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 Currentsymbolverknüpfte Verzeichnis befindet sich auch nicht im Pfad. Für die meisten Skripte sollte es daher kein Problem sein.

Es ist jedoch möglich - 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.

Du hattest Recht. Ich hatte vor langer Zeit MacPython installiert und das hat meine PATH-Variable durcheinander gebracht, so dass `python` auf` / Library / Frameworks / Python.framework / Versions / Current / bin` hinweist. Natürlich wurde das nicht auf 2.6 aktualisiert. Also habe ich meine PATH-Variable durch die Standardvariable ersetzt, die ich bei Google gefunden habe. Jetzt werde ich MacPython von meinem System entfernen. SBSTN vor 14 Jahren 3
@SBSTN Ich habe das gleiche Problem (Python-Pfad auf `/ Library / Frameworks / Python.framework / Versions / Current / bin`). Wie ändere ich das? Zach vor 13 Jahren 0
Funktioniert nicht mit Xcode4, da es keine / Library / Frameworks / Python * mehr gibt und / usr / bin / python sonst nirgendwo hinweist. Irgendwelche Ideen? MacPorts wären eine Lösung, aber ich möchte sie nicht installieren. Alex vor 12 Jahren 0
Ich habe Xcode 4 installiert und es funktioniert immer noch wie beschrieben. `/ usr / bin / python` ist eine ausführbare Datei, keine Verknüpfung. `/ usr / bin / python2.6` ist ein Link, der auf` ../../ System / Library / Frameworks / Python.framework / Versions / 2.6 / bin / python2.6` verweist. Da sich die ausführbare Python-Datei in `/ System / Library` befindet, sollte sie verfügbar sein, unabhängig davon, ob / welche Version von Xcode installiert ist. Nate vor 12 Jahren 0
Das tut nicht, was die Leute fragen. Nicht sicher, warum es die Antwort ist. 010110110101 vor 12 Jahren 0
Dies löst den Symlink in `/ System / Library / Frameworks / Python.framework / Versions` nicht, wobei` Current` auf `2.7` verweist, was Probleme verursachen kann (da es sich noch in` sys.path` mit 2.6 befindet!). Stan vor 11 Jahren 0
@Stan: Auf meinem System ist "Current" * nicht * auf dem "sys.path", bei einer Stamminstallation von 10.8. Nate vor 11 Jahren 0
12
ovanes

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 sie noch nicht installiert sind.

Installieren Sie zuerst das python_select-Paket:

sudo port install python_select 

Sie können bereits jetzt prüfen, welche Python-Distributionen auf Ihrem System verfügbar sind. Geben Sie einfach den 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. Du siehst also, dieses Paket spielt sich gut mit Mac ab. Für weitere Optionen

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

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

port search python 

Dadurch wird eine lange Liste mit verfügbaren Pythons erzeugt.

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 zur Ausgabe von 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.

5
Doug Harris

Angenommen, Sie verwenden bash: Geben Sie Folgendes ein:

% type -a python 

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

Auf diese Weise können Sie besser erkennen, was hier vor sich geht.

3
curious

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.

Das ist ähnlich wie bei mir. Stattdessen habe ich den Link in / usr / bin eingefügt und ihn "Python" genannt (die alte "Python" -Programmdatei, die Apple dort abgelegt hat, überschreiben). Also: `sudo ln -s /path/to/2.7 / usr / bin / python`. So wird es in Linux gemacht und es macht einfach Sinn. Nacht vor 11 Jahren 1
0
AGDM

Nicht ideal (IMO), aber alle Apps, die pythonin meinem Computer gesucht wurden, wurden behoben /usr/local/bin/.

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

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

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