web-dev-qa-db-ja.com

PySide / Qtインポートエラー

PySide/QtをPythonのようにインポートしようとすると、次のエラーが発生します。

from PySide import QtCore

ImportError: dlopen(/usr/local/lib/python2.7/site-packages/PySide/QtCore.so, 2): Library not loaded: libpyside-python2.7.1.2.dylib
  Referenced from: /usr/local/lib/python2.7/site-packages/PySide/QtCore.so
  Reason: image not found

私は次の方法で実行/インストールしています:

  • Mac OSX10.9.4マーベリックス
  • 自作Python 2.7
  • 自作インストールQt
  • PipはPySideをインストールしました

ファイルlibpyside-python2.7.1.2.dylibは、エラーメッセージにリストされているQtCore.soファイルと同じパスにあります。

この特定の問題を検索した結果、これらのライブラリをアプリの一部としてパッケージ化しようとする人々が生まれましたが、私はこれを行っていません。システムで実行しようとしていますが、この問題が発生しています。アプリのトラブルシューティングのために、人々はoToolを提案しました。ここで役立つかどうかはわかりませんが、これはoToolを実行したときの出力です。

otool -L QtCore.so 
QtCore.so:
    libpyside-python2.7.1.2.dylib (compatibility version 1.2.0, current version 1.2.2)
    libshiboken-python2.7.1.2.dylib (compatibility version 1.2.0, current version 1.2.2)
    /usr/local/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.6)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

何か案は?前もって感謝します :)

20
elliot

OToolからの出力はライブラリへのフルパスを報告する必要があるため、インストーラーは多少壊れています(パスは、install_name_toolを使用してPysideインストーラーによって変更される必要があります)。

インストーラーのどの部分が壊れているかを理解するのではなく、次のように定義することをお勧めします。

DYLD_LIBRARY_PATH=/your/path/to/pyside/libraries
export DYLD_LIBRARY_PATH

これにより、実行可能ローダーは、リンカーによって構成されていない場合でも、指定したパスへのライブラリーをスキャンするように強制されます。

15

これを見ると、質問が修正されます: https://github.com/pyside/packaging/blob/master/setuptools/templates/pyside_postinstall.py

pyside_postinstall.py -install

13
jawa

同様の問題があり、otool -L(質問に表示されている)とinstall_name_toolを使用して手動でパスを更新することで解決しました。

install_name_tool -change @rpath/libshiboken.cpython-34m.1.2.dylib /usr/local/lib/python3.4/site-packages/PySide/libshiboken.cpython-34m.1.2.dylib /usr/local/lib/python3.4/site-packages/PySide/QtCore.so

install_name_tool -change @rpath/libpyside.cpython-34m.1.2.dylib /usr/local/lib/python3.4/site-packages/PySide/libpyside.cpython-34m.1.2.dylib /usr/local/lib/python3.4/site-packages/PySide/QtCore.so

スクリプトを実行する前に、PySideディレクトリ内のいくつかのファイルに対してこれを行う必要がありました。

このブログ投稿は素晴らしいリファレンスです: http://thecourtsofchaos.com/2013/09/16/how-to-copy-and-relink-binaries-on-osx/

3
RyanB

私は解決策を見つけました ここ

export DYLD_LIBRARY_PATH=/usr/local/lib/python[version]/site-packages/PySide

python 3.5の場合、これは

export DYLD_LIBRARY_PATH=/usr/local/lib/python3.5/site-packages/PySide
1
johnson

BrewがインストールしたQtと仮想環境を使用しているMavericksでも、同様の問題が発生しました。

私はbrew reinstall Qtしなければなりませんでした

次に、pyside_postinstall.py -installを実行します

ここを参照してください: https://github.com/Homebrew/homebrew/issues/27898

0
alexgoodell