2011-01-12 7 views
1

Ich versuche, Python im 32-Bit-Modus auf Mac OS X Snow Leopard auszuführen, und ich habe einige Erfolge, aber mit der folgenden Seltsamkeit.Ausführen von Python in 32-Bit mehr für wxPython

Wenn ich es mit/usr/bin/python starte, scheint es nicht im 32-Bit-Modus laufen zu wollen, aber wenn ich es mit /usr/bin/python2.6 benutze, läuft es im 32-Bit-Modus gut . Soweit ich das vorher sagen konnte, war/usr/bin/python dasselbe wie /usr/bin/python2.6. Weiß jemand, warum sie sich hier anders verhalten würden?

zrbecker:src$ /usr/bin/python --version 
Python 2.6.1 
zrbecker:src$ /usr/bin/python2.6 --version 
Python 2.6.1 
zrbecker:src$ arch -i386 /usr/bin/python2.6 -c 'import wx' 
zrbecker:src$ arch -i386 /usr/bin/python -c 'import wx' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/var/tmp/wxWidgets/wxWidgets-13~231/2.6/DSTROOT/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/__init__.py", line 45, in <module> 
    File "/var/tmp/wxWidgets/wxWidgets-13~231/2.6/DSTROOT/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_core.py", line 4, in <module> 
ImportError: /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_core_.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode) 

Antwort

5

In OS X 10.6, bereitgestellt Apple einen Weg permanent wählen, ob der Python 2.6 in O X in 64-Bit-Modus läuft geliefert oder 32-Bit-Modus (VERSIONER_PYTHON_PREFER_32_BIT) und andere Optionen. Details siehe man 1 python. Das Programm /usr/bin/python ist ein Front-End für dieses Programm und untersucht die ausgewählten Optionen, die entweder durch default plists oder durch Umgebungsvariablen festgelegt sind, und erzeugt die gewünschte Interpreter-Version im ausgewählten Modus, unabhängig vom Modus, in dem das Wrapper-Programm gestartet wird arch zum Beispiel). /usr/bin/python2.6 ist eine leicht modifizierte Version des Standard-OS X-Pythonw-Programms und es startet den Interpreter in dem Modus, in dem es selbst gestartet wird. Die Standard-Python.org-Distribution für 2.6 hat keinen ähnlichen Code. In neueren Versionen von Python, 2.7 und 3.2, ehrt die Pythonw-Programmdatei auch den Modus, in dem sie gestartet wird, so dass arch -i386 funktioniert.

Übrigens stellt Apple here die Quelle von verschiedenen Open-Source-Produkten zur Verfügung, einschließlich Python, in OS X-Releases zusammen mit den Anpassungen Patches verwendet, um es zu bauen.

+0

Danke für die Lösung, Ned! Es hat mir geholfen, LilyPonds Mid2ly-Skript zu benutzen (es war ein 32-Bit-Midi.so). Ich habe die Shebang-Zeile in '#!/Usr/bin/env/usr/bin/arch-i386 python' geändert und das Problem wurde gelöst. –

0

Do:

file /usr/bin/python /usr/bin/python2.6 
ls -l /usr/bin/python /usr/bin/python2.6 

Sie sollten sie verschiedene ausführbare Dateien sind finden, nicht nur symbolische Links.

+0

Seltsam, warum kann/usr/bin/python nicht im 32-Bit-Modus ausgeführt werden? – zrbecker

+0

Es kann, Sie können es einfach nicht über den Befehl arch ausführen. Arch führt/usr/bin/python mit dem i386 arch aus und dann macht es sein eigenes Ding, wenn es python2.6 ausführt. Wie oben erwähnt, gibt es andere Möglichkeiten,/usr/bin/python zu sagen, welche Architektur von python2.6 ausgeführt werden soll. – RobinDunn

Verwandte Themen