2011-01-12 13 views
1

Mac OS X Snow Leopardで32ビットモードでPythonを実行しようとしていますが、私はいくつかの成功を収めていますが、次のような奇妙な点があります。wxPythonの32ビット版でPythonを実行

私は/ usr/bin/pythonで実行した場合、32ビットモードで実行したくないようですが、私が/usr/bin/python2.6を使用して実行すると、32ビットモードで正常に動作します。私の知る限りでは、/ usr/bin/pythonは/usr/bin/python2.6と同じです。誰がなぜここで違うのか知っていますか?

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) 

答えて

5

は、Appleが永久をへの道を提供Pythonの2.6は、OS Xに供給されるかを選択し、64ビットモードまたは32ビットモード(VERSIONER_PYTHON_PREFER_32_BIT)及び他のオプションで実行されます。詳細は、man 1 pythonを参照してください。 /usr/bin/pythonプログラムはそのフロントエンドであり、default plistsまたは環境変数によって設定された選択されたオプションを調べ、ラッパープログラムが起動されたモードに関係なく、選択されたモードで目的のインタプリタバージョンを生成します例えばarch)。 /usr/bin/python2.6は、標準OS X pythonwプログラムのやや修正されたバージョンです。そして、それ自身が起動されるモードでインタプリタを起動します。2.6向けの標準python.orgディストリビューションには、同様のコードはありません。新しいバージョンのPython 2.7および3.2では、pythonw実行可能ファイルも起動されるモードを尊重します。したがって、arch -i386が動作します。

ところで、アップルは、OS Xリリースに組み込まれているPythonをはじめ、さまざまなオープンソース製品のソースをビルドに使用したカスタマイズパッチと一緒に利用できるようにしています。

+0

ソリューションありがとう、Ned!それは私がLilyPondのmid2lyスクリプトを働かせるのに役立ちました(32ビットmidi.soを使用していました)。私はシバン行を '#!/ usr/bin/env/usr/bin/arch -i386 python'に変更し、それが問題を解決しました。 –

0

の操作を行います。

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

あなたは、彼らが異なる実行ファイルだけではなく、シンボリックリンクしているはずです。 OS X 10.6で

+0

奇妙なことに、/ usr/bin/pythonが32ビットモードでも実行できない理由は何ですか? – zrbecker

+0

これはarchコマンドではできません。 Archはi386 archを使って/ usr/bin/pythonを実行し、python2.6を実行すると独自のことを行います。上で述べたように、/ usr/bin/pythonにpython2.6のどのアーキテクチャを実行するべきかを伝える他の方法があります。 – RobinDunn

関連する問題