對於Xcode使用Python模板,我有一個簡單的項目在一臺機器上運行,並在另外兩臺機器上失敗,原因不同。我解決的失敗,即使有main.m文件:Xcode如何選擇運行哪個Python?
Py_SetProgramName("/usr/bin/python");
實際運行Python作爲從main.py看到這一點:
import sys
print sys.version
是不同的。問題是這個Python沒有安裝objc。所以問題是:我的機器清理不足,我該如何指導Xcode使用系統Python?
編輯:
這是一個看來似乎是微不足道的問題,但事實並非如此。這似乎是因爲當我將Mac OS X 10.5指定爲Base SDK時,Xcode鏈接到該Python.framework,正如我通過雙擊Xcode項目中鏈接框架中的圖標所看到的。
Python.framework中的每個版本在Info.plist中都有一個鍵/值對:CFBundleExecutableName/Python。幸運的是(對於取證)這個Python版本2.5框架啓動2.6.1!然而,通過打印sys.version(來自main.py)或者通過窺探加載器(通過導出DYLD_PRINT_LIBRARIES = 1),我可以看到PyObjC App實際上啓動了Python 2.5.4。
上面的代碼與Py_SetProgramName ..是無關緊要的 - 它可以被註釋掉,一切正常。
所以它看起來像是Python.framework控制着哪個Python被啓動,它不會按照我預期的方式執行此操作,並且可能通過一個不透明的初始化例程來控制它,因爲它由Apple控制。看起來「控制」情況的最好方法是更改Base SDK。