Xcode用のPythonテンプレートを使用すると、さまざまな理由で、1台のマシンで実行されている単純なプロジェクトが他の2台のマシンで失敗しています。私が解決した失敗は、main.mに次のようなものがあるにもかかわらずです。
Py_SetProgramName("/usr/bin/python");
main.pyから見た実際の実行中のPythonは次のとおりです。
import sys
print sys.version
異なります。そして問題は、この他のPythonにobjcがインストールされていないことでした。したがって、問題は次のとおりです。マシンをクリーンアップする以外に、XcodeにシステムPythonを使用するように指示するにはどうすればよいですか?
編集:
これは些細なことのように思える問題ですが、そうではありません。Mac OS X 10.5をベースSDKとして指定すると、XcodeプロジェクトのLinked Frameworksのアイコンをダブルクリックするとわかるように、XcodeはそのPython.frameworkに対してリンクしているようです。
Python.frameworkの各バージョンには、Info.plistにキーと値のペアがあります:CFBundleExecutableName/Python。幸いなことに(フォレンジックの場合)、バージョン2.5フレームワークのこのPythonは2.6.1を起動します!それでも、sys.versionを(main.pyから)印刷するか、ローダーをスヌーピングする(DYLD_PRINT_LIBRARIES = 1をエクスポートする)ことで、PyObjCアプリが実際にPython2.5.4を起動することがわかります。
上記のPy_SetProgramName..の行は関係ありません---コメントアウトでき、すべてが正常に機能します。
つまり、Python.frameworkはどのPythonを起動するかを制御しますが、これは私が期待した方法では実行せず、Appleによって制御されているため、不透明な初期化ルーチンを介して制御される可能性があります。状況を「制御」する最良の方法は、BaseSDKを変更することだと思われます。