我試圖利用在OSX埃爾卡皮坦10.11.5在IDL 8.5.1新的IDL-Python的橋樑。自啓動以來,我在Windows上使用了該功能,這種功能非常好用,但它在OSX上無法正常工作。IDL的Python橋出現故障,由於SIP在OSX埃爾卡皮坦
我已經安裝了Anaconda Python 3.4.1 64bit來測試。
後設置環境所描述here,其涉及設置DYLD_LIBRARY_PATH
環境變量。
我能夠從Python中調用IDL,而不是周圍的其他方式。例如,如果我運行下面的命令(從一個例子here),觀察到了以下錯誤:
IDL> ran = Python.Import('numpy.random')
% DLM_LOAD: Error loading sharable executable.
Symbol: IDL_Load, File = /Applications/exelis/idl85/bin/bin.darwin.x86_64/idl_python34.so
dlopen(/Applications/exelis/idl85/bin/bin.darwin.x86_64/idl_python34.so, 1): Library not loaded: libpython3.4m.dylib
Referenced from: /Applications/exelis/idl85/bin/bin.darwin.x86_64/idl_python34.so
Reason: image not found
% Execution halted at: $MAIN$
與他們的技術支持工作後(我不得不說,他們已經非常有幫助,他們的幫助質量很高),我們確定問題是由OSX中的新系統完整性保護(SIP)功能引起的。這個問題已經在stack之前描述過了。
他們的建議是禁用SIP,但我也沒有從我的僱主允許這樣做,也沒有關閉系統的安全功能只是爲了獲得一塊商業軟件工作的意願。所以我被卡住了。
實質上,DYLD_LIBRARY_PATH
變量根本就沒有傳遞到IDL過程。啓動IDL時,將執行/Applications/exelis/idl85/bin/idl
shell腳本,此時該變量將被刪除,而我所做的任何修改都不會完成,並且idl
腳本根本不知道我的更改。
我的問題的話,是這樣的:有沒有其他人發現了一種替代的方式獲得IDL的Python橋工作(除禁用SIP等)?這裏有沒有其他的選擇?或者,只有在哈里斯地理空間的好人找到另一種實現此功能的方式之後,這種方法纔會起作用。
這在我看來是一個嚴重的設計問題,是否需要在根級別修改系統剛剛運行他們的軟件。
謝謝克里斯我真的很感謝幫助。我無法嘗試上面列出的步驟,因爲在我目前的僱主中,用戶(包括我自己)沒有sudo權限。 – spacemanjosh
嗨@spacemanjosh,嘗試沒有「sudo」的命令。如果您在自己的應用程序文件夾中安裝了IDL,那麼它就會正常工作。如果沒有「sudo」,它不起作用,您將需要管理員執行此操作。 –
嘿@ chris-torrence。我應該說,我是這個功能的忠實粉絲。它在linux和windows上運行得非常好。 Mac似乎是這個問題唯一的平臺。我已經用最新的IDL 8.6試過了,而且安裝起來要容易得多,但是,對sudo權限的要求相同。現在我只是在linux虛擬機中測試才能完成任務。 – spacemanjosh