2009-09-04 2 views
2

~/opt/qt-4.6.0/, 에있는 내 자신의 Qt4 라이브러리를 사용하여 Python 모듈을 컴파일했지만 해당 모듈을 가져 오려고하면로드되는 동적 라이브러리는 MacPorts Qt4 설치에서 가져옵니다.잘못된 Mac OS X 프레임 워크가로드 됨

$ /opt/local/bin/python2.6 
>>> import vtk 
objc[58041]: Class QMacSoundDelegate is implemented in both /Users/luis/opt/qt-4.6.0/lib/QtGui.framework/Versions/4/QtGui and /opt/local/libexec/qt4-mac/lib/QtGui.framework/Versions/4/QtGui. Using implementation from /opt/local/libexec/qt4-mac/lib/QtGui.framework/Versions/4/QtGui. 
objc[58045]: Class QCocoaColorPanelDelegate is implemented in both /Users/luis/opt/qt-4.6.0/lib/QtGui.framework/Versions/4/QtGui and /opt/local/libexec/qt4-mac/lib/QtGui.framework/Versions/4/QtGui. Using implementation from /opt/local/libexec/qt4-mac/lib/QtGui.framework/Versions/4/QtGui. 
[... more output like above ...] 
>>> 

~/opt/qt-4.6.0/lib/ 디렉토리에있는 프레임 워크를로드 (또한 MacPorts를에서 설치) 파이썬을 말하는 방법이 있나요? 어떤 환경 변수를 변경해야할지 모르겠습니다.

답변

2

파이썬을 호출하기 전에 MacPorts의 '라이브러리 전에 ~/opt/qt/...에 라이브러리를 넣어 DYLD_LIBRARY_PATH을 설정하십시오 (당신이 모르는 경우이 작업을 수행하는 방법의 예를 들어 ~/.profile 살펴보고, MacPorts의 정보는 다음의 제품에 똑같은 일을 도서관을 DYLD_LIBRARY_PATH에 두십시오). dyld, OS X 동적 링커는 DYLD_LIBRARY_PATH을 사용하여로드 할 때 라이브러리를 찾습니다 (다른 방법들 중에서). 자세한 내용은 man dyld을 참조하십시오.

+0

전에 LD_LIBRARY_PATH를 시도했지만 작동하지 않았습니다. 하지만 'dyld'에 대한 포인터를 가져 주셔서 감사합니다. 그것의 man 페이지는 매우 유익하다. 이 문제를 해결할 수 있는지 알아 보겠습니다. – Luis

+0

DYLD_LIBRARY_PATH도 사용해 보셨습니까? –

+0

... 방금 당신의 대답을 보았습니다. 다행스럽게 생각 했어. –

2

좋아, Barry Wark이 dyld(1)이라고 지적한 후, 매뉴얼 페이지는 내가 설정할 수있는 많은 변수를 설명했다.

첫 번째 힌트는 환경 변수 DYLD_PRINT_LIBRARIES을 설정 한 것이므로 어떤 라이브러리가로드되었는지 확인할 수 있습니다.

$ DYLD_PRINT_LIBRARIES=1 python -c 'import vtk' 
[... snip ...] 
dyld: loaded: /opt/local/libexec/qt4-mac/lib/QtGui.framework/Versions/4/QtGui 
dyld: loaded: /opt/local/lib/libpng12.0.dylib 
dyld: loaded: /opt/local/libexec/qt4-mac/lib/QtSql.framework/Versions/4/QtSql 
dyld: loaded: /opt/local/libexec/qt4-mac/lib/QtCore.framework/Versions/4/QtCore 
[... snip ...] 
dyld: loaded: /Users/luis/opt/qt-4.6.0/lib/QtGui.framework/Versions/4/QtGui 
dyld: loaded: /Users/luis/opt/qt-4.6.0/lib/QtSql.framework/Versions/4/QtSql 
dyld: loaded: /Users/luis/opt/qt-4.6.0/lib/QtCore.framework/Versions/4/QtCore 
[... snip ...] 
$ 

아, 우리가 의심했던 것처럼 qt4-mac 프레임 워크가 실제로 처음으로로드되었습니다. 맨 페이지를 다시 읽는 것, 우리가 시도 할 수있는 다음 것은 DYLD_FRAMEWORK_PATH을 어디에서 보는지 알 수 있도록 변경하는 것입니다. 지금, 우리는 다시 VTK 파이썬 모듈을 수입하려고 내 ~/.bash_profile

export DYLD_FRAMEWORK_PATH="${HOME}/opt/qt-4.6.0/lib:${DYLD_FRAMEWORK_PATH}" 

의 끝과 다시 로그인 한 후이 줄을 추가 :

$ python -c 'import vtk' 
$ 

더 출력이 시간이 없습니다. 문제가 해결되었습니다.