1

PySideは正常にインストールされ、完全に機能しますが、shibokenモジュールをインポートする方法が見つかりません。Pythonモジュール( http://bugs.pyside.org/show_bug.cgi?id=902 )を介してshiboken関数を公開する機能リクエストについての議論を見つけましたが、問題は解決されています。私が正しく理解していれば、2012年1月に実装されました。PySide 1.1.1をインストールした後、試してみると:

>>> import shiboken
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named shiboken

ImportError例外が発生します。shiboken pythonモジュールをインストールするにはどうすればよいですか?

4

3 に答える 3

4

誰かがcmakeの更新を忘れたようです:バグ-PYSIDE-55

しかし、コンパイルしたばかりshiboken-1.1.2で、問題は修正されたようです。

于 2012-09-06T16:27:45.937 に答える
1

私は理想的な状況下でekhumoroの答えは完全に正しいと信じていますが、残念ながら私はそれほど幸運ではなく、バイナリパッケージはまだshibokenpythonモジュールの使用を許可していませんでした。手動でコンパイルする必要がありましたが、おそらくubuntu 12.04を使用しているためか、他の理由がわからないため、ホームページにあるデフォルトの手順では機能しなかったため、その部分も扱いにくくなりました。ターゲットはvirtualenvを使用した場合の使用法であったため、次の手順に従いました。

export PYSIDESANDBOXPATH=/path/to/my/virtualenv
export PATH=$PYSIDESANDBOXPATH/bin:$PATH
export PYTHONPATH=$PYSIDESANDBOXPATH/lib/python2.6/site-packages:$PYTHONPATH
export LD_LIBRARY_PATH=$PYSIDESANDBOXPATH/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$PYSIDESANDBOXPATH/lib/pkgconfig:$PKG_CONFIG_PATH

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$PYSIDESANDBOXPATH -DCMAKE_BUILD_TYPE=Debug -DENABLE_ICECC=0'
make
make install
sudo ldconfig

ここでの最初の問題は、コンパイルされてインストールが開始され、shiboken pythonモジュールをインストールしたい場合、これが発生したことです。

-- Installing: .../lib/python2.7/site-packages/shiboken.so
-- Removed runtime path from .../lib/python2.7/site-packages/shiboken.so

次に、このパラメーターをcmakeに追加する必要がある場所を見つけました。

-DCMAKE_SKIP_RPATH:BOOL=YES

これでインストールは成功しましたが、Pythonでshibokenをインポートしようとすると、次のようになりました。

import shiboken
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libshiboken.so: cannot open shared object file: No such file or directory

Googleは、$LD_LIBRARY_PATHにそれらのライブラリが配置されているパスが含まれていないために問題が発生していることを明らかにしました。まず第一に、ubuntu 12(そして私は10と11もそうだと思います)は$ LD_LIBRARY_PATH環境変数をもう使用しないので、設定さえされていませんでした。そのため、未設定の変数をパスで結合しようとしたため、パスでさえ正しくありませんでした。

export LD_LIBRARY_PATH=$PYSIDESANDBOXPATH/lib:$LD_LIBRARY_PATH

そのため、2つの通常の文字列として扱い、それらを結合しました。以下のスニペットは、このような問題を引き起こさないように安全に結合する方法を示しています。しかし、それでも問題は解決しませんでした。ldconfigを実行しても何も更新されなかったため、Pythonでのインポートは再び失敗しました。googleでも見つかった最終的な解決策:)は、/ etc / ld.so.conf.d /に新しいファイルを作成し、そこに$ LD_LIBRARY_PATHの内容を配置し、その後ldconfigを実行することでした。したがって、これが期待どおりに機能した最終的なインストールスクリプトです。

#!/usr/bin/env bash
export PYSIDESANDBOXPATH=/path/to/my/virtualenv
export PATH="$PYSIDESANDBOXPATH/bin${PATH:+:$PATH}"
export PYTHONPATH="$PYSIDESANDBOXPATH/lib/python2.7/site-packages${PYTHONPATH:+:$PYTHONPATH}"
export LD_LIBRARY_PATH="$PYSIDESANDBOXPATH/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export PKG_CONFIG_PATH="$PYSIDESANDBOXPATH/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$PYSIDESANDBOXPATH -DCMAKE_SKIP_RPATH:BOOL=YES -DCMAKE_BUILD_TYPE=Debug -DENABLE_ICECC=0
make
make install
sudo sh -c "echo $LD_LIBRARY_PATH > /etc/ld.so.conf.d/shiboken.conf"
sudo ldconfig

それがすべてです、それは私が理解するのに数時間かかりました、これが他の誰かを救うことを願っています:)

于 2012-09-07T10:22:10.370 に答える
0

これが、PySide-1.1.2 + Qt4.8.4+msvc2010でテストされたソースコードからWindowsでshiboken.pydをコンパイルする方法です。

まず、shiboken-1.1.2.tar.bz2を手動でダウンロードし、解凍します。次に、次のようにコンパイルします(virtualenvを設定する必要がある場合があります)。

python setup.py build --openssl=C:\dev\OpenSSL\1.0.0j\bin --qmake=C:\Qt\4.8.4\bin\qmake.exe

それが終わった後、私はshiboken.pydを次の場所で入手しました:

PySide-1.1.2\pyside_install\py2.7-qt4.8.4-32bit-release\lib\site-packages\shiboken.pyd

PS

ただし、ファイルがサイトパッケージにインストールされる「PySide-1.1.2 \ build\lib」にshiboken.pydがありませんでした。これは、PIPからPySideをコンパイルしてshiboken.pydを取得できない理由を説明しています。

pip install PySide --install-option="--openssl=C:\dev\OpenSSL\1.0.0j\bin" --install-option="--qmake=C:\Qt\4.8.4\bin\qmake.exe"

ところで、Mac OS Xでは、macportsを使用してPySideをインストールすると、間違った場所("/opt/local/lib/python2.7/site-packages"ではなく"/opt/local/lib/python2.7/site-packages"にインストールされているため、"importshiboken"も失敗します。 /opt/local/Library/Frameworks/Python.framework/Version/2.7/lib/python2.7/site-packages ")。「/opt/local/lib/python2.7/site-packages」をPYTHONPATHに追加すると、問題が解決します。

pyside-setupスクリプトには間違いなくバグがあります。プロジェクトが終了する前に、DigiaがPySideを修正するために誰かを送ることができることを願っています。

于 2013-03-30T19:19:20.930 に答える