我相信在理想的情況下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
這一切,它花了我幾個小時才能弄清楚,希望這將節省別人:)
感謝您的回覆,這是否意味着shiboken python模塊從未安裝過純PySide安裝,我必須手動編譯它? – andrean
@andrean。你在什麼平臺上,以及你通常如何安裝PySide? – ekhumoro
我使用的是Ubuntu,我用pip安裝了PySide。 – andrean