2011-05-07 6 views
2

EnterpriseDB의 설치 프로그램을 사용하여 Mac OSX 10.6에 PostgreSQL 9.0.4를 설치했으며 plpython에서 구현 된 저장 프로 시저가 python 2.5를 사용한다는 사실을 알게되었습니다. plpython 라이브러리로 살펴보면 그 (otool 종류의 리눅스에 무엇을 LDD 맥에 않습니다) 확인하는 것 같다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)

는 어떻게 변경할 수 있습니다 파이썬 2.5에서 파이썬 2.6이?

종류와 관련,

SSC는

답변

3

당신은 소스에서 다시 작성해야합니다. 바이너리 배포판에서 변경할 방법이 없습니다. 당신이 configure를 실행하면, 예를 들어, 사용하려는 python 이진의 전체 경로 환경 변수 PYTHON를 설정

,

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

당신은 엔터프라이즈 DB는 사람들이 자신의 빌드 루틴을 업데이트 버그로 시도 할 수 , 나는 생각한다. Python 버전을 선택하는 기준에 대해 확신하지 못합니다. 또는 MacPorts에서 설치하십시오.

1

필자는 Peter Eisentraut의 답변에이 글을 게시해야하지만 입력이 끝나기 전에 코멘트가 끝나기 전에 우연히 글을 올리겠습니다. 또한 몇 가지 링크 및 기타 자료를 추가하고 싶습니다.

EnterpriseDB forum에있는 소스에서 다시 작성하고 posting this issue을 다시 작성했습니다. 몇 가지 이유로, 내 포럼 게시물은 내가 전에 들어 본 적이없는 사용자 이름 아래에 나타났습니다. 심지어 해당 사용자의 모든 게시물을 읽을 수도 있습니다. 어쩌면 그/그녀는 나에게 로그인했다. 나에게 포럼 소프트웨어의 거대한 버그처럼 보일지도 모른다 :-(

어쨌든 plpython 바이너리를 빌드하는 데는 최신 PostgreSQL 소스 코드 download 이상이 필요하다. 내 시스템의 기본 파이썬 버전은 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 
를 구성하는 것이 사실에도 불구하고 구축 할 수 make를 실행 다음

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

: 일부 documentedconfigure에 매개 변수를 설정합니다.내가 필요로하는 모든이 최신 버전 2.5 즉, 나를 위해 충분히 좋은

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.7 설치를 사용합니다. 아직도 이상해.

기존의 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 버전을 결정하기 위해 enterprisedb 설치 관리자가 쿼리하는 것입니다. 또한 'man python'에는 유익한 DEFAULT PYTHON 섹션 변경이 있습니다. – ssc

+0

이것은 RHEL5에서 작동했으며, 따라서 postgres 디렉토리를 적절하게 변경했습니다. 감사! – dmb

관련 문제