2010-09-02 3 views
8

Auf dieser HilfeseiteWarum kann ich den Systemstandard Python nicht ändern, wie Apple sagt, ich kann?

http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/python.1.html

Apple sagt:

Mit

 % defaults write com.apple.versioner.python Version 2.5 

Version Standard 2.5 der Benutzer machen wird die Standard-PYTHON ändern, wenn die Lauf sowohl die Python- und Pythonw-Befehle (Versionsnummer ist der interne Name der verwendeten Software zur Versionsauswahl).

Das funktioniert einfach nicht!

tppllc-Mac-Pro:~ swirsky$ python --version 
Python 2.7 
tppllc-Mac-Pro:~ swirsky$ defaults write com.apple.versioner.python Version 2.5 
tppllc-Mac-Pro:~ swirsky$ python --version 
Python 2.7 

und auch nicht den Schalter 32-Bit-Python

Version 2.6 unterstützt 64-Bit-Ausführung des Standard

64-Bit-Unterstützung zu machen (die standardmäßig aktiviert ist). Version 2.5 unterstützt nur die 32-Bit-Ausführung.

Wie die Version von Python kann der Python-Befehl zwischen 32 und 64-Bit-Ausführung auswählen (wenn beide verfügbar sind). Verwendung:

 % defaults write com.apple.versioner.python Prefer-32-Bit -bool yes 

32-Bit-Ausführung der Benutzer standardmäßig zu machen (mit /Library/Preferences/com.apple.versioner.python wird die systemweite Standard festgelegt). Die Umgebungsvariable VERSIONER_PYTHON_PREFER_32_BIT kann auch verwendet werden (hat Vorrang vor der Einstellungsdatei):

 % export VERSIONER_PYTHON_PREFER_32_BIT=yes # 

Bourne-wie Muscheln oder

 % setenv VERSIONER_PYTHON_PREFER_32_BIT yes # 

C-ähnliche Schalen

I‘ Ich bin hier ein Rattenloch. Ich versuche, wxpython zum Laufen zu bringen. Aber es wird nicht auf dem Apple Python 2.7 laufen, weil es keine 64-Bit-Unterstützung gibt, und die Kakao-Unterstützung ist noch nicht abgeschlossen.

=== UPDATE ===

Vielen Dank für Ihre Hilfe! Das Geheimnis ist gelöst. Eine Sache, die mich verwirrte, war, dass ich keine Probleme hatte, (32-Bit) wxpython auf meinem Laptop (ein aktueller i5 MacBook Pro) zu laufen, aber es würde nicht auf meinem Desktop laufen (ein aktueller i7 mac pro).

Sie hatten beide Python 2.7, und ich nahm an, es war das gleiche. Aber es war nicht!

Der Mac Pro hat die x86_64 bauen

tppllc-Mac-Pro:~ swirsky$ file `which python` 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 3 architectures 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386): Mach-O executable i386 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc7400): Mach-O executable ppc 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64 

und der Laptop hat nicht:

thrilllap-2:thrillscience swirsky$ file `which python` 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 2 architectures 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc): Mach-O executable ppc 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386): Mach-O executable i386 

Ich werde die eine ohne die x86_64-Version auf meinem Desktop-Rechner neu installieren, wie Ich brauche noch keine 64-Bit-Unterstützung.

+0

Hallo, wie kann ich Python i386 installieren? – Believe2014

Antwort

3

Ich denke, die Version von python, die mit OS X 10.6 geliefert wird, ist 2.6. Die Tatsache, dass Ihre Befehlszeile 2,7 bedeutet, bedeutet, dass Sie 2,7 auf andere Weise installiert haben, wenn ich es richtig verstanden habe. (Vielleicht Macports, Fink oder direkt kompiliert.) Diese nicht von Apple bereitgestellten Pythons unterstützen normalerweise nicht das Versionskontrollsystem von Apple. Könnten Sie Folgendes ausführen?

$ which python 

Sagt es /usr/bin/python?

+1

Tatsächlich könnte es auch in einer der dot-Dateien des Benutzers eingerichtet werden. Probiere 'echo $ PATH' um zu sehen ob Python 2.7 irgendwo drin ist? –

+0

Wenn 'which python' nicht '/ usr/bin/python' ausführt, was ist die Lösung? – mrsoltys

12

defaults write com.apple.versioner.python und VERSIONER_PYTHON_PREFER_32_BIT sind von Apple entwickelt Änderungen und gelten nur auf die von Apple bereitgestellten /usr/bin/python in OS X 10.6 (Python 2.6.1). (UPDATE: Dies gilt auch für OS X 10.7 Lion.) Wahrscheinlich haben Sie Python 2.7 mit einem der Python.org-Installationsprogramme installiert. Momentan sind zwei 2.7-Installationsprogramme von python.org verfügbar, eines (für 10.5 und höher) enthält sowohl 32-Bit- als auch 64-Bit-Unterstützung. Die zweite (für 10.3 und höher, einschließlich 10.6) ist nur 32-Bit. Vermutlich haben Sie den ersten installiert. Um es in 32-Bit-Modus ausgeführt werden, können Sie es aufrufen, mit dem arch Befehl:

$ arch -i386 python2.7 

Oder, wenn Sie immer verwenden möchten, 32-Bit, können Sie neu installieren 2.7 das andere Installer. Beachten Sie, dass das 64-Bit-Installationsprogramm von python.org in 2.7 neu ist. Und leider gibt es ein paar Probleme damit, nämlich Tkinter und Programme, die es verwenden (einschließlich IDLE) scheitern auf OS X 10.6. Dies wird in einem Wartungsupdate behoben. Wenn Sie sie unter 10.6 benötigen, sollten Sie sich zunächst an das 32-Bit-Installationsprogramm halten.

Wahrscheinlich ist der Grund, dass der Befehl python jetzt 2.7 aufruft ist, dass das python.org Installationsprogramm aktualisiert Ihre Login-Profile, wie .bash_profile seinen Rahmen ist-Verzeichnis an erster Stelle auf der Shell Suche PATH.

$ echo $PATH 
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin: # ... 
$ which python 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python 
$ /usr/bin/python 
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> ^D 
$ python 
Python 2.7 (r27:82508, Jul 3 2010, 21:12:11) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> ^D 
$ python -c 'import sys;print("%x"%sys.maxint)' 
7fffffffffffffff 
$ arch -x86_64 python -c 'import sys;print("%x"%sys.maxint)' 
7fffffffffffffff 
$ arch -i386 python -c 'import sys;print("%x"%sys.maxint)' 
7fffffff 
Verwandte Themen