![](/img/trans.png)
[英]CreateProcessW failed error:2 ssh_askpass: posix_spawn: No such file or directory Host key verification failed, jupyter notebook on remote server
[英]LiClipse 8.1 on Mac OS 10.14.6 cannot run python interpreter (posix_spawn failed)
也許有人看過這個..
相當舊的 Mac OS 可能會導致這種情況,但大多數情況下一切正常:
$ pyenv versions
system
3.9.5
* 3.9.7 (set by /Users/aanisimov/.pyenv/version)
$ which python
/Users/aanisimov/.pyenv/shims/python
$ python --version
Python 3.9.7
LiClipse 只是找不到它,在那里嘗試了所有這些按鈕(PATH,pip:什么不是)仍然是同樣的錯誤:
Errors getting info on discovered interpreter(s).
See error log for details.
java.lang.RuntimeException: java.io.IOException: Cannot run program "/usr/bin/python": error=0, posix_spawn failed
java.lang.RuntimeException: java.io.IOException: Cannot run program "/usr/bin/python2.7": error=0, posix_spawn failed
java.lang.RuntimeException: java.io.IOException: Cannot run program "/usr/local/bin/python3": error=0, posix_spawn failed
java.lang.RuntimeException: java.io.IOException: Cannot run program "/usr/local/bin/python3.9": error=0, posix_spawn failed
看起來它正試圖在最明顯的位置找到它,但無法生成運行它的進程?
Python 通過終端和 Sublime Text 之類的東西可以正常工作。
感謝您的任何建議!
我遇到了非常類似的問題,除了在 macOS 12.4 Monterey 上運行的 LiClipse 版本 8.2.0,MacPorts 安裝了 Python 解釋器。 症狀相似,只是 LiClipse 返回錯誤代碼 316 而不是 0。我想知道:如何解決此問題,以便 LiClipse 可以在 PyDev 中添加新的解釋器條目,而不顯示錯誤?
我想出了一個解決方法。 我不完全理解它為什么起作用,但我有一些線索。
解決方法:
安裝相同年份的標准 Eclipse 應用程序(Eclipse 2021-12,版本 4.22,對應於 LiClipse 8.2.0)。
退出 LiClipse。
使用純文本編輯器編輯 LiClipse.app 中的文件LiClipse.app/Contents/Eclipse/LiClipse.ini
。 更改該文件中的行:
--launcher.defaultAction openFile -vmargs
閱讀(當然用您的主目錄名稱替換<myuserid>
,並且在以“/Users/”開頭的很長的行中沒有換行符......):
--launcher.defaultAction openFile --launcher.appendVmargs -vm /Users/<myuserid>/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.macosx.x86_64_18.0.1.v20220515-1614/jre/lib/libjli.dylib -vmargs
保存 LiClipse.ini。
運行 LiClipse.app。 它現在應該能夠在 PyDev 中添加新的解釋器條目,並且沒有錯誤。
刪除 Eclipse.app。 (這應該讓 /Users//.p2/ 不受干擾。)
它的作用:
我不是 LiClipse 或 Eclipse 內部的專家。 我認為正在發生的是 Eclipse 為應用程序運行提供了一個 OpenJDK,它與 LiClipse 提供的 OpenJDK 不同,它更好地支持最新版本的 macOS。 差異的證據:
% /Applications/LiClipse.app/jre/Contents/Home/bin/java --version
openjdk 14.0.2 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.2+12)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.2+12, mixed mode, sharing)
% /Users/<myuserid>/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.macosx.x86_64_18.0.1.v20220515-1614/jre/bin/java --version
openjdk 18.0.1 2022-04-19
OpenJDK Runtime Environment Temurin-18.0.1+10 (build 18.0.1+10)
OpenJDK 64-Bit Server VM Temurin-18.0.1+10 (build 18.0.1+10, mixed mode)
LiClipse.ini
文件控制應用程序的啟動方式。 macOS 運行一個啟動器程序,啟動器由 ini 文件的內容引導。 插入的行在我看來就像他們告訴啟動器指定不同的 Java VM 在運行主 Eclipse/LiClipse 應用程序時使用 - 使用由 Eclipse 提供的 OpenJDK 18.0.1,而不是保存在~/.p2/
中LiClipse 提供的 OpenJDK 14.0.2; 並調用庫libjli.dylib
。
關於原因的線索
我對 JDK 知之甚少,不知道libjli.dylib
庫是做什么的。 StackOverflow 答案中有線索, Java libjli 庫是干什么用的? ,並在博客文章中,從 C 調用 Java 。 看起來它有助於 Java VM 環境和主機的本地語言環境之間的交互。 StackOverflow 的回復提到,
libjli.so 包含一個啟動器接口,用於准備在命令行中傳遞的 arguments 並使用它們啟動虛擬機。...
在我的案例中,錯誤消息為,
java.io.IOException:無法運行程序“/opt/local/Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python”:錯誤=316,posix_spawn
我推測 LiClipse 試圖調用 macOS 運行 Python 解釋器,但這次嘗試失敗了,因為 Java VM 環境無法成功調用主機的原生環境。
對 LiClipse.ini 的更改意味着 LiClipse 使用不同的 OpenJDK,並以不同的方式調用 libjli。 這些差異的結合似乎讓Java VM環境成功調用了宿主機的原生環境。
我推測正確的修復需要更新 LiClipse。 我已經打開票239,8.2.0 無法運行 python 和點子,“java.io.IOException:無法運行程序”... error=316, posix_spawn failed ,來跟蹤它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.