2011-05-07 87 views
2

我已經在Mac OSX 10.6上使用EnterpriseDB的安裝程序安裝了PostgreSQL 9.0.4,並注意到在plpython中實現的存儲過程使用python 2.5。一看進入plpython庫似乎確認(在蘋果確實在Linux上什麼LDD otool樣的呢):如何在Mac OSX上更改plpython使用的Python版本?

host:~ user$ otool -L /Library/PostgreSQL/9.0/lib/postgresql/plpython2.so
/Library/PostgreSQL/9.0/lib/postgresql/plpython2.so:
/System/Library/Frameworks/Python.framework/Versions/2.5/Python (compatibility version 2.5.0, current version 2.5.1)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)

我怎樣才能改變這種狀況在Python 2.5到Python 2.6?

親切的問候,

SSC

回答

3

你需要從源頭上重建。無法在二進制分發中更改它。

當您運行configure,環境變量PYTHON設置爲您要使用的python二進制,例如完整路徑,

./configure --other-stuff ... PYTHON=/usr/bin/python2.6 

你可以嘗試錯誤的EnterpriseDB的人來更新他們的構建程序, 我猜。不確定他們選擇Python版本的標準。另外,也許從MacPorts安裝。

1

我應該將此作爲評論發佈到Peter Eisentraut的回答中,但我一直敲擊回車,然後在評論完成之前意外發帖;我還想添加一些鏈接和其他內容:

我最終完成了彼得推薦的內容 - 無論是從源碼重建還是posting this issueEnterpriseDB forum。出於某種原因,我的論壇帖子出現在一些我以前從未聽過的用戶名下,我甚至可以閱讀該用戶的所有帖子。也許他/她在我之前登錄過,看起來像是他們論壇軟件中的一個非常大的bug: - (

無論如何,構建plpython二進制文件只包含download最新的PostgreSQL源代碼,解壓縮並通過一些參數configuredocumented

configure --with-python PYTHON=/usr/bin/python2.6 

然後,運行make打造儘管我的系統默認的Python版本是2.6,我明確地傳遞作爲參數,配置打印此消息

checking for python... /usr/bin/python2.6 
checking for Python distutils module... yes 
checking Python configuration directory... /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config 
checking how to link an embedded Python application... -L/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config -lpython2.6 -ldl 
checking whether Python is compiled with thread support... yes 

但內置的二進制反正使用的Python 2.7的安裝我甚至不記得我已經安裝:

otool -L <postgres build dir>/src/pl/plpython/plpython2.so 
<postgres build dir>/src/pl/plpython/plpython2.so: 
    /Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.10) 

這對我不夠好,我需要的是一個較新的版本2.5。仍然很奇怪。

現有的plpython二進制文件(使用Python 2.5的二進制文件)駐留在EnterpriseDB的默認安裝目錄/Library/PostgreSQL/9.0/lib/postgresql/plpython2.so中,其符號鏈接plpython.so位於同一文件夾中。我選擇保留原來只是爲了安全起見,重新符號鏈接,而不是刪除:

sudo mv plpython2.so plpython25.so 
sudo cp <postgres build dir>/src/pl/plpython/plpython2.so plpython27.so 
sudo ln plpython27.so plpython2.so 

嗯,也許這應該進入維基...

+0

順便說一下,我碰到一個VERSIONER_PYTHON_VERSION來到環境變量設置爲2。5;機會就在於企業安裝程序正在查詢以確定當前的Python版本。還有'man python'有一個內容豐富的CHANGING THE DEFAULT PYTHON部分。 – ssc 2011-05-08 10:07:57

+0

這適用於RHEL5,只需相應地更改postgres目錄即可。謝謝! – dmb 2012-04-17 15:57:37

相關問題