2012-09-06 93 views
1

PySide成功安裝後,它完美的作品,但我不能找到一種方法,導入shiboken模塊。現在我發現對功能要求通過一個Python模塊(http://bugs.pyside.org/show_bug.cgi?id=902)揭露shiboken功能的討論,但問題得到解決。如果我理解正確,它將於2012年1月實施。 即使安裝PySide 1.1.1後,當我嘗試:PySide的shiboken Python模塊沒有找到

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

我得到一個ImportError異常。我如何安裝shiboken python模塊?

回答

4

看樣子有人忘了更新的cmake:bugs-PYSIDE-55

不過,我剛剛編譯shiboken-1.1.2,這個問題似乎是固定的。

+0

感謝您的回覆,這是否意味着shiboken python模塊從未安裝過純PySide安裝,我必須手動編譯它? – andrean

+0

@andrean。你在什麼平臺上,以及你通常如何安裝PySide? – ekhumoro

+0

我使用的是Ubuntu,我用pip安裝了PySide。 – andrean

1

我相信在理想的情況下ekhumoro的回答是完全正確的,不幸的是我沒那麼幸運,二進制包仍然不允許使用shiboken python模塊。我不得不手動編譯它,但這部分變得棘手,因爲它沒有在主頁上找到的默認指令工作,可能是因爲我使用Ubuntu 12.04,或者我不知道爲什麼。 由於目標是從withing一個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模塊,這happend:

-- 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 

現在安裝w ^作爲成功的,但是當我試圖在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 

谷歌透露,問題是,因爲$ LD_LIBRARY_PATH不包含其中那些庫所在的路徑造成的。首先,Ubuntu 12(我認爲10和11也是)不再使用$ LD_LIBRARY_PATH環境變量,所以甚至沒有設置。 因此,即使路徑是不正確的,因爲我想加入的是未設置變量和路徑:

export LD_LIBRARY_PATH=$PYSIDESANDBOXPATH/lib:$LD_LIBRARY_PATH 

所以把它作爲兩個常規字符串和剛剛加入他們在一起。下面的代碼展示瞭如何安全地加入它們以避免造成這種麻煩。但是這也沒有解決問題。因爲運行ldconfig仍然沒有更新任何內容,所以在python中導入失敗了。 與谷歌太:)被創造/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 

這一切,它花了我幾個小時才能弄清楚,希望這將節省別人:)

+0

+ +1爲了分擔您的來之不易的知識。 – ekhumoro

+1

沒有人有Windows版本的解決方案...? – 2013-01-05 09:07:42

0

以下是我編譯shiboken.pyd在源代碼的Windows上,使用PySide-1.1.2 + Qt4.8.4 + msvc2010進行測試。

首先,手動下載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 

附:

但是,在「PySide-1.1.2 \ build \ lib」中缺少shiboken.pyd,其中文件將被安裝到站點包。這就解釋了爲什麼我coundn't通過使用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,「進口shiboken」也將失敗,因爲它是安裝到錯誤的位置(「/opt/local/lib/python2.7/site-packages」而不是「/opt/local/Library/Frameworks/Python.framework/Version/2.7/lib/python2.7/site-包「)。將「/opt/local/lib/python2.7/site-packages」添加到PYTHONPATH將解決該問題。

pyside-setup腳本中肯定存在缺陷。希望Digia可以在項目死亡之前派人修復PySide。