2010-12-14 96 views
0

對於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。

回答

0

對不起回答我自己的問題,但我只是困惑。這部分是一個錯誤

的Python在2.5版推出框架2.6.1

引起我沒有意識到,這是怎麼回事(從版本/ 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 
.. 
相關問題