2017-07-19 62 views
0

我將PySide的一個下載副本從其原始安裝位置(/Library/PySide/2.7/site-packages/PySide)移動到網絡上的一個位置,因此腳本可以訪問它。但是,我開始得到「庫未加載」錯誤。我在我的桌面上製作的拷貝來進行測試:圖書館OSX上的PySide沒有加載錯誤

Traceback (most recent call last): 
    File "test_pyside_imports.py", line 2, in <module> 
    import PySide.QtCore 
ImportError: dlopen(/Users/user/Desktop/PySide_OSX/PySide/QtCore.so, 2): Library not loaded: /Library/Python/2.7/site-packages/PySide/libpyside-python2.7.1.2.dylib 
    Referenced from: /Users/user/Desktop/PySide_OSX/PySide/QtCore.so 
    Reason: image not found 

我也碰到這個問題之前運行,而且我相信,我有一個bash腳本,剛跑install_name_tool很多固定它:

#! /usr/bin/env bash 
install_name_tool -change @rpath/libpyside-python2.7.1.2.dylib ./PySide/libpyside-python2.7.1.2.dylib ./PySide/QtCore.so 
install_name_tool -change @rpath/libshiboken-python2.7.1.2.dylib ./PySide/libshiboken-python2.7.1.2.dylib ./PySide/QtCore.so 

但是,由於某些原因,腳本似乎無法解決問題,並且QtCore.so仍在尋找原始位置的庫。我檢查了這些文件的權限,並在腳本中重複檢查了路徑。任何想法我缺少什麼?

謝謝。

編輯

越來越近。

#! /usr/bin/env bash 
install_name_tool -change /Library/Python/2.7/site-packages/PySide/libpyside-python2.7.1.2.dylib ./PySide/libpyside-python2.7.1.2.dylib ./PySide/QtCore.so 
install_name_tool -change /Library/Python/2.7/site-packages/PySide/libshiboken-python2.7.1.2.dylib ./PySide/libshiboken-python2.7.1.2.dylib ./PySide/QtCore.so 

當我運行上面的bash腳本,然後嘗試做進口,我得到一個新的錯誤:

D25MG1AZF8J8:PySide_OSX spearsc$ python test_pyside_imports.py 
Traceback (most recent call last): 
    File "test_pyside_imports.py", line 2, in <module> 
    import PySide.QtCore 
ImportError: dlopen(/Users/spearsc/Desktop/PySide_OSX/PySide/QtCore.so, 2): Library not loaded: ./PySide/libpyside-python2.7.1.2.dylib 
    Referenced from: /Users/spearsc/Desktop/PySide_OSX/PySide/QtCore.so 
    Reason: unsafe use of relative rpath ./PySide/libpyside-python2.7.1.2.dylib in /Users/spearsc/Desktop/PySide_OSX/PySide/QtCore.so with restricted binary 

我想用我的第一個bash腳本的問題是,老路徑不存在並被忽略。現在,我需要再次嘗試,但使用絕對路徑。

回答

0

這是訣竅。我必須在我的bash腳本中使用絕對路徑。所有bash腳本都運行'install_name_tool'來將舊路徑更改爲新路徑。

#! /usr/bin/env bash 
install_name_tool -change /Library/Python/2.7/site-packages/PySide/libpyside-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libpyside-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/QtCore.so 
install_name_tool -change /Library/Python/2.7/site-packages/PySide/libshiboken-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libshiboken-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/QtCore.so 
install_name_tool -change /Library/Python/2.7/site-packages/PySide/libpyside-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libpyside-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libshiboken-python2.7.1.2.dylib 
install_name_tool -change /Library/Python/2.7/site-packages/PySide/libshiboken-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libshiboken-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libshiboken-python2.7.1.2.dylib 
install_name_tool -change /Library/Python/2.7/site-packages/PySide/libpyside-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libpyside-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libpyside-python2.7.1.2.dylib 
install_name_tool -change /Library/Python/2.7/site-packages/PySide/libshiboken-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libshiboken-python2.7.1.2.dylib /Users/spearsc/Desktop/PySide_OSX/PySide/libpyside-python2.7.1.2.dylib 

只要記住相應代碼段將只是改變了QtCore.so路徑,libshiboken-python2.7.1.2.dylib和libpyside-python2.7.1.2.dylib。您還需要爲PySide文件夾中的所有.so文件運行「install_name_tool」。最後,我的bash腳本長約37-38行。