问题
使用嵌入预建 Python库的docker容器时, Python命令失效,虚拟环境不创建下错误消息可见于驱动日志
20/02/29 16:38:35 WARN PythonDriverWrapper: Failed to start repl ReplId-5b591-0ce42-78ef3-7 java.io.IOException: Cannot run program "/local_disk0/pythonVirtualEnvDirs/virtualEnv-56a5be60-3e71-486f-ac04-08e8f2491032/bin/python" (in directory "."): error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.spark.util.Utils$.executeCommand(Utils.scala:1367) at org.apache.spark.util.Utils$.executeAndGetOutput(Utils.scala:1393) at org.apache.spark.util.Utils$.executePythonAndGetOutput(Utils.scala: … at java.lang.Thread.run(Thread.java:748) Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.Java.Lang.ProcessImpl.java:13417多
通过笔记本运行下命令可确认问题 :
s虚拟env-nite打包
结果报错类似:
evilenv[-serv-data,cpyon3-servi
上头虚拟env命令不识别--no-site-packages选项 。
版本化
问题影响当前所有Databricks运行时间版本,但Databricks运行时间版本包括Conda除外影响虚拟env图书馆20.0以上版
因果
问题因使用python虚拟env库版docker容器不支持--no-site-packages选项 。
Databricks运行时需要虚拟env库支持无站点包选项.选项删除虚拟env图书馆20.0以上版
可验证虚拟env库版本通过笔记本操作下命令
sh虚拟env-version
求解
安装兼容版时可指定兼容版解题虚拟env库里
例举设置virtualenv==16.0.0Dockerfile安装虚拟env库版本16.0.0版本库支持所需选项