在OSX

2010-10-07 50 views
0

指定Framework版本我編譯嵌入的Python,特別是V3.1的Python程序。在我的系統中,我有幾個版本的Python框架:3.1,2.5,2.6。在編譯時,當我將「-framework Python」傳遞給g ++時,g ++似乎在版本2.6(居於「/ System/Library/Frameworks /」)而不是版本3.1(位於「/ Library/Frameworks /」處)在一個錯誤。這兩個路徑都在框架搜索路徑中,這從在冗長模式下嘗試相同編譯(將-v傳遞給g ++)中可以明顯看出。在OSX

雖然這似乎是一件簡單的事情,我一直沒能找到它提及關於G ++,LD或Xcode的任何文檔。目前,我通過移動/System/Library/Frameworks/Python.framework到/System/Library/Frameworks/Python.framework.moved完成編譯成功,但是這是聯合國醜陋,治標不治本。

因此,沒有人知道什麼是解決這一問題的最佳途徑?特別是,我希望能夠針對正確版本的Python框架編譯此程序,而不管系統上安裝了任何其他版本。

謝謝。

+0

'-framework Python/3.1'工作嗎? – 2010-10-07 18:13:34

+0

沒有運氣。我試了幾個變化: -framework的Python/3.1 -framework的Python/3 -framework Python3.1 -framework Python3 -framework /庫/框架/ Python的 -framework /Library/Frameworks/Python/Versions/3.1 等等。 似乎沒有辦法。 – 2010-10-07 18:58:27

回答

0

先嚐試改變在Python框架Current符號鏈接/Library/Frameworks

$ cd /Library/Frameworks/Python.framework/Versions 
$ ls -l 
total 4 
drwxrwxr-x 8 root admin 340 Aug 31 02:10 2.6/ 
drwxrwxr-x 8 root admin 340 Oct 6 21:56 2.7/ 
drwxrwxr-x 7 root admin 306 Oct 6 14:00 3.1/ 
lrwxr-xr-x 1 root admin 3 Oct 7 00:33 [email protected] -> 2.7 
$ sudo rm Current 
$ sudo ln -s 3.1 Current 

(UPDATE)我希望,沒有測試它,確保/Library/FrameworksCurrent鏈接正確的版本指向就足夠了。但是,根據OP的實驗,您可能還需要修改/System/Library中的類似鏈接。通常這是因爲在它的任何被認爲是OS X的一部分,由蘋果,因此,您所做的任何更改可以,充其量,由下一System Update,在最壞的擦除管理一個壞主意,被修改/System/Library什麼,打破你的系統。在這種情況下,它可能不會發揮很大作用的Current鏈接可能只有在這種情況下使用,即,鏈接的嵌入式庫。如果你真的很挑剔,你可以考慮在完成時恢復原始價值。

+0

謝謝你,奈德,這很好。如果你仔細閱讀我的文章,你會發現版本2.5和2.6安裝在/ System/Library/Frameworks中,而3.1安裝在/ Library/Frameworks中。 /Library/Frameworks/Python.framework中的'Current'符號鏈接指向正確的版本(即3.1),但是/ System/Library/Frameworks中的一個沒有(它指向2.6)。當我修改那一個時,一切都開始工作。如果您修改您的解決方案以反映這一事實,我會將其標記爲正確的答案。謝謝。 – 2010-10-09 19:20:10