通过
%pip install
直接在 Databricks 笔记本单元中安装库时,Python 解释器将重新启动。我的理解是,为了使新安装的软件包对笔记本单元的其余部分可见并可访问,必须重新启动解释器。
如何以编程方式执行此解释器重启?
我正在根据存储在单独文件中的要求使用函数调用安装软件包,但我注意到新安装的软件包不存在,尽管安装似乎正在笔记本或集群范围内进行。我发现原因可能是我的安装代码没有重新启动解释器。
这样的行为可能吗?
你可以使用这个:
dbutils.library.restartPython()
首先,您可以在启动笔记本之前在集群级别或作业级别预安装软件包。我建议您在尝试其他任何操作之前这样做。相信我,我已经运行了数千个库,包括自定义构建的库,并且从来不需要这样做。
关于你的实际问题。是的,但它会抛出异常。
此代码将导致您终止 DBX 工作区上的 python 进程
%sh
pid=$(ps aux | grep PythonShell | grep -v grep | awk '{print $2}')
kill -9 $pid
但是,这给你带来了问题。如果您将其作为 bash 笔记本单元运行,则这将无法在 try catch 逻辑中进行包装,这使得自动化工作流程变得不可能。
我想说你可以从 python 调用 shell 命令,但这不起作用,因为异常会在该单元格中抛出。你也许可以使用 scala 和 sys_process 库来实现它,但遗憾的是我不是 scala 专家。