Wie aktualisiere ich Python unter Mac OS X richtig?

21891
Philippe Mongeau

Wenn ich Python von der Python-Website herunterlade und versuche, es mit dem Installationsprogramm zu installieren, wird es installiert, aber ich muss angeben, dass ich die neue Version von Python verwenden möchte, wenn ich meine Programme vom Terminal aus ausführen möchte. Wenn ich nur tippe:

python app.py 

Es läuft mit der alten Version.

Wie kann ich die neue Version als Standard festlegen?

6

3 Antworten auf die Frage

7
Philippe Mongeau

Ich habe endlich gefunden, wie es geht. Das Installationsprogramm hat einen Python 2.6-Ordner in / Application erstellt. In diesem Ordner befindet sich ein Skript mit dem Namen Update Shell Profile.command. Ich musste es nur ausführen und nun funktioniert es.

Ja. Python 2.6 enthält jetzt ein Skript, um es in der Befehlszeile als Standard festzulegen. jweede vor 14 Jahren 0
5
Telemachus

Zwei Fragen:

  1. Wo wurde der neue Python installiert?
  2. Wie sieht dein $ PATH aus?

Auf Unix-ähnlichen Systemen wird standardmäßig installiert, dass vom Benutzer installierte Software in / usr / local / bin installiert wird und die meisten * nix-Distributionen dieses Verzeichnis vor systemweite Verzeichnisse in die Standardvariable $ PATH setzen (wie in Ihrem Shell weiß, wo sie nach Programmen suchen muss. Auf diese Weise wird das neue Element zuerst gefunden, wenn Sie etwas Neues installieren.

Ein Standard OS X $ PATH sieht jedoch so aus:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 

Das Problem ist, dass durch das spätere Setzen von / usr / local / bin der systemweite Python (der sich in / usr / bin und früher in $ PATH befindet) immer wieder betroffen ist.

Meine Antwort ist, meinen $ PATH auf einem Mac so aussehen zu lassen:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin 

Erstellen Sie dazu eine Datei .profile in Ihrem Home-Verzeichnis und fügen Sie Folgendes hinzu:

#### Let's take care of our $PATH # A backup of the original $PATH # /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin  # My preferred order - /usr/local goes first, damn it! PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin 

Edit : Ich verfolge hier, nicht in Kommentaren, weil es für einen Kommentar zu lang wird. Die Zeile in Ihrer .profile mit /sw/bin/init.shkommt aus dem Paket - Manager Fink, die ich nehme an, Sie verwenden (oder zu einem gewissen Punkt). Die andere Zeile scheint zu suggerieren, dass Sie irgendwann MacPython installiert haben und es $PATHfür Sie neu geschrieben hat. Ich kenne MacPython nicht, aber wenn es sich um diese Website handelt, wurde sie seit 2004 nicht aktualisiert. Es scheint auch nicht über OS X nach 10.3 zu sprechen, was nicht sehr aktuell ist.

Jetzt bin ich verwirrter: Wann haben Sie Python aktualisiert? Wie haben Sie es aktualisiert? Welche Version von OS X verwenden Sie?

est -r /sw/bin/init.sh &&. /sw/bin/init.sh # PATH für MacPython 2.6 einstellen # Die Originalversion wird in .profile.pysave PATH = "/ Library / Frameworks / Python.framework / Versions / 2.6 / bin: $ " export PATH gespeichert So sieht mein .profile aus. Ich bin nicht sicher, was ich tun soll, da es sich von Ihrem unterscheidet. [Gibt es eine Möglichkeit, Code in Kommentaren zu formatieren?] Philippe Mongeau vor 14 Jahren 0
@Philippe: Sie können Code mit Backquotes formatieren, genau wie in Posts. In dem Beitrag selbst finden Sie meine Antwort auf das größere Problem. Telemachus vor 14 Jahren 0
Ich habe endlich gefunden, wie ich es lösen kann. Das Installationsprogramm hat in meinem Anwendungsverzeichnis einen Ordner erstellt, der den Leerlauf, einige Beispiele und * ein Skript * enthält, um die Befehlszeile zu aktualisieren. Und für das MacPython-Ding, denke ich, wurde es mit xcode installiert. Danke, dass du versucht hast, mir trotzdem zu helfen. Philippe Mongeau vor 14 Jahren 0
Ich glaube, MacPython bezieht sich auf das .dmg-Installationsprogramm von http://python.org/download/. las3rjock vor 14 Jahren 0
@ Las3rjock: Cool, das ist viel besser als ich vermute! Danke für den Link. Telemachus vor 14 Jahren 0
-1
Bill Weiss

Finden Sie heraus, wo Python lebt:

$ which python /usr/bin/python 

Sehen Sie, ob es ein Symlink ist:

$ ls -Fal /usr/bin/python lrwxr-xr-x 1 root wheel 72 May 19 12:02 /usr/bin/python@ -> ../../System/Library/Frameworks/Python.framework/Versions/2.5/bin/python 

Wenn ja, verknüpfen Sie / usr / bin / python mit dem neuen Python:

$ sudo ln -s (new python, maybe /System/Library/Frameworks/Python.framework/Versions/2.x/bin/python) /usr/bin/python 

Überprüfen Sie, ob es funktioniert:

$ python --version Python 2.xxx 
Er sollte den Standard-Python des Systems auf diese Weise * NICHT * rückgängig machen. OS X erwartet, dass es dort ist, wo es ist. Das wäre ein großer Fehler. Telemachus vor 14 Jahren 4
Es ist eine legitime Antwort auf die Frage. Ich habe es schon einmal gemacht, ohne dass irgendetwas explodiert. Jede andere Methode führt nicht dazu, dass Programme mit einem neuen Pfad in / usr / bin / python den neuen richtigen Pfad verwenden. Bill Weiss vor 14 Jahren 0
@ Bill: Ich finde es eine schreckliche Herangehensweise. Sie können jederzeit mit einem Shebang von `#! / Usr / bin / env python 'ein Skript erstellen, und Sie sollten keine systemweite Perl oder Python ersetzen, wenn Sie dies vermeiden können. Telemachus vor 14 Jahren 3
Ich bin bei Telemachus dabei. Lass die Standard-Mac-Sachen so wie sie sind. Benutzerdefinierte Installationen befinden sich in / usr / local oder / opt / local und passen PATH und andere Umgebungsvariablen nach Bedarf an. Doug Harris vor 14 Jahren 4