該問題涉及運行'GAMMA SAR和干涉測量軟件'(GAMMA)。爲了在GAMMA中處理數據,用戶需要在shell中輸入複雜的命令。我試圖用Python來將這些命令準備爲字符串,並希望直接從Python運行/執行這些命令,而不是這種單調乏味的過程。dyld:Library未加載:libDIFF.dylib(在OSX El Capitan上)
下面是一個工作解決方案的簡化示例:我在Python中準備一個字符串並將其打印到命令行。如果我手動將Python打印的字符串複製/粘貼到shell中,則Gamma可以平穩運行。
工作碼:
# Visualize interferogram
p = 'dismph TMX.int 1189'
print(p) #copy/pasting this output to a command line runs the external program
這得到乏味作爲每個命令需要被複制/從外殼到另一個殼粘貼。相反,我想運行Python並將命令打印到執行的shell中。以下代碼能夠將字符串打印到shell並執行它。
問題代碼:
import os
# Visualize interferogram
p = 'dismph TMX.int 1189'
os.system(p)
不幸的是,我得到了以下錯誤消息。
錯誤:
dyld: Library not loaded: libDIFF.dylib
Referenced from: /Users/[username]/[programname]/[functionname]/bin/dismph
Reason: image not found
該樣品在OSX埃爾卡皮坦版本10.11.4,與Python 3.5.1運行|蟒蛇2.4.1(x86_64的)| (默認,2015年12月7日11:24:55)[達爾文GCC 4.2.1(Apple Inc. build 5577)]:
問這個問題的另一種方式:打字和跑步有什麼區別shell中的命令與從Python打印並執行相同的字符串。從技術上講,兩者都應該看到相同的變量/路徑/庫,但在這種情況下似乎有區別。 GAMMA似乎無法找到必要的庫。
任何代碼,只有理論? – haifzhan
[看看這個相關的問題](http://stackoverflow.com/questions/17703510/dyld-library-not-loaded-reason-image-not-loaded)。似乎你錯過了一個依賴關係,或者找不到所需的依賴關係。需要一些代碼來進一步診斷。你在什麼操作系統上?可能很可能是共享庫的簡單路徑問題。 –
這可能取決於平臺。你在使用Apple iOS嗎?哪個版本?這是一個32位或64位的Python? – tdelaney