You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks的Python文件中导入dbutils模块

在Databricks普通Python模块中使用dbutils的解决方法

dbutils是Databricks笔记本的内置对象,并非标准Python模块,所以直接在普通.py文件里引用或import都会报错。以下是几种可行的解决方式:

方法1:将dbutils作为参数传递给模块函数

这是最规范的实现方式,通过依赖注入降低耦合度。
修改some_python_module.py:

def fetch_secret(dbutils):
    return dbutils.secrets.get("some_location", "some_secret")

在Databricks笔记本中调用:

import some_python_module
secret_value = some_python_module.fetch_secret(dbutils)

方法2:通过SparkSession获取dbutils对象

利用Databricks内部API,从活跃的SparkSession中直接获取dbutils,无需手动传参。
修改some_python_module.py:

from pyspark.sql import SparkSession

def fetch_secret():
    spark = SparkSession.getActiveSession()
    # 通过JVM调用获取dbutils实例
    dbutils = spark._jvm.com.databricks.backend.daemon.driver.DatabricksDriverWrapper.getDbutils()
    return dbutils.secrets.get("some_location", "some_secret")

在笔记本中调用:

import some_python_module
secret_value = some_python_module.fetch_secret()

注意:这种方式依赖Databricks内部实现逻辑,不同版本可能存在兼容性风险。

方法3:将dbutils注入模块全局命名空间

在笔记本导入模块后,手动将dbutils赋值给模块的全局变量,适合简单场景快速实现。
调整some_python_module.py:

# 先定义变量,后续从外部注入dbutils
secret_value = None

def init_secret():
    global secret_value
    secret_value = dbutils.secrets.get("some_location", "some_secret")

在笔记本中操作:

import some_python_module
# 注入dbutils到模块全局空间
some_python_module.dbutils = dbutils
# 初始化获取密钥
some_python_module.init_secret()
# 使用获取到的密钥
print(some_python_module.secret_value)

内容的提问来源于stack exchange,提问作者user1700890

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 07:57:06