2009-09-04 29 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のからインストール)のPythonを伝える方法はありますか?私はどのような環境変数を変更するのかよく分かりません。

答えて

2

のpythonを起動する前に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

[OK]を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を変更してどこを見るかを知ることです。私は今、私の~/.bash_profile

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

の末尾に次の行を追加し、バックログインした後、我々は再びVTKのPythonモジュールをインポートしてみてください。

$ python -c 'import vtk' 
$ 

何も出力は、この時間はありません。問題が修正されました!

関連する問題