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库版本。这个版本的库支持所需的选项。

这篇文章有用吗?