从 Databricks 上的代码重新启动 Python 解释器?

问题描述 投票:0回答:2

通过

%pip install
直接在 Databricks 笔记本单元中安装库时,Python 解释器将重新启动。我的理解是,为了使新安装的软件包对笔记本单元的其余部分可见并可访问,必须重新启动解释器。

如何以编程方式执行此解释器重启?

我正在根据存储在单独文件中的要求使用函数调用安装软件包,但我注意到新安装的软件包不存在,尽管安装似乎正在笔记本或集群范围内进行。我发现原因可能是我的安装代码没有重新启动解释器。

这样的行为可能吗?

python package databricks interpreter
2个回答
4
投票

你可以使用这个:

dbutils.library.restartPython()

有关更多信息,请参阅 https://learn.microsoft.com/en-us/azure/databricks/dev-tools/databricks-utils#dbutils-library-restartpython


1
投票

首先,您可以在启动笔记本之前在集群级别或作业级别预安装软件包。我建议您在尝试其他任何操作之前这样做。相信我,我已经运行了数千个库,包括自定义构建的库,并且从来不需要这样做。

关于你的实际问题。是的,但它会抛出异常。

enter image description here

此代码将导致您终止 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 专家。

© www.soinside.com 2019 - 2024. All rights reserved.