Python REPL未能在碼頭工人

學習如何解決一個Python virtualenv錯誤,防止REPL從碼頭工人的容器

寫的arjun.kaimaparambilrajan

去年發表在:2022年5月19日

問題

當你使用一個碼頭工人的容器,包括預先構建的Python庫,Python命令失敗並不是創建虛擬環境。下麵的錯誤消息是可見的在司機日誌。

20/02/29 16:38:35警告PythonDriverWrapper:未能開始repl replid - 5 - b591 - 0 - ce42 - 78 - ef3 - 7 . io .IOException:不能運行程序”/ local_disk0 / pythonVirtualEnvDirs / virtualenv - 56 - a5be60 - 3 - e71 - 486 f - ac04 - 08 - e8f2491032 / bin / python”(在目錄“。”):錯誤= 2,沒有這樣的文件或目錄在java.lang.ProcessBuilder.start (ProcessBuilder.java: 1048)美元org.apache.spark.util.Utils .executeCommand (Utils.scala: 1367)美元org.apache.spark.util.Utils .executeAndGetOutput (Utils.scala: 1393) org.apache.spark.util.Utils .executePythonAndGetOutput美元(跑龍套。scala:…java.lang.Thread.run (Thread.java: 748)造成的:. io .IOException:錯誤= 2,在java.lang.UNIXProcess沒有這樣的文件或目錄。在java.lang.UNIXProcess forkAndExec(本地方法)。< init > (UNIXProcess.java: 247) java.lang.ProcessImpl.start (ProcessImpl.java: 134) java.lang.ProcessBuilder.start (ProcessBuilder.java: 1029)…17

你可以確認這個問題在筆記本通過運行下麵的命令:

% sh virtualenv——no-site-packages

結果是一個錯誤消息類似如下:

用法:virtualenv[——版本][——with-traceback] [- v | - q][——發現{裝入的}][p py][——造物主{內裝式、cpython3-posix venv}][——播種機{應用數據,pip}] [——no-seed][——活化劑comma_separated_list][——明確][——system-site-packages][——符號鏈接|副本][——下載|——沒有下載][——extra-search-dir d (d…]][——pip版本][——setuptools版本][——輪版本][——no-pip] [——no-setuptools] [——no-wheel] [——clear-app-data] [——symlink-app-data][——提示提示][h]桌子virtualenv:錯誤:以下參數要求:服務台

virtualenv命令不承認——no-site-packages選擇。

版本

這個問題影響到所有當前數據磚運行時版本,除了包括Conda磚運行時版本。它會影響virtualenv圖書館20.0.0及以上版本。

導致

這個問題是由於使用Pythonvirtualenv庫版本不支持的集裝箱碼頭工人——no-site-packages選擇。

磚運行時需要的virtualenv庫,支持——no-site-packages選項。這個選項了virtualenv圖書館20.0.0及以上版本。

你可以驗證virtualenv圖書館在筆記本版本通過運行下麵的命令:

% sh virtualenv——版本

解決方案

你可以通過指定解決問題當你安裝一個兼容的版本virtualenv圖書館。

例如,設置virtualenv = = 16.0.0在Dockerfile安裝virtualenv16.0.0庫版本。這個版本的庫支持所需的選項。

這篇文章有用嗎?