0

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を変更することだと思われます。

4

1 に答える 1

0

自分の質問に答えて申し訳ありませんが、私は混乱していました。この部分はエラーです

バージョン 2.5 フレームワークの Python が 2.6.1 を起動

ここで何が起こっているのかを認識していないことが原因です (Version/2.6 ディレクトリから)

> ./Python
-bash: ./Python: cannot execute binary file
> Python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 

$PATH を検索して /opt/local/bin/python を起動していることです。混乱をお詫び申し上げます。

要約すると、SDK を設定すると、ローダーをスヌーピングすることでわかるように、目的の Python を実行する必要があります。

> export DYLD_PRINT_LIBRARIES=1
> ~/Desktop/X/build/Debug/X.app/Contents/MacOS/X
dyld: loaded: /Users/telliott_admin/Desktop/X/build/Debug/X.app/Contents/MacOS/X
dyld: loaded: /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
dyld: loaded: /System/Library/Frameworks/Python.framework/Versions/2.5/Python
..
于 2011-01-08T19:03:39.280 に答える