在导入到databricks笔记本的自定义python包中访问databricks secret

在导入到databricks笔记本的自定义python包中访问databricks secret,python,databricks,azure-databricks,Python,Databricks,Azure Databricks,我们有一个自定义python包,托管在私有bitbucket repo上,可以通过%pip install git+https/…在任何databricks笔记本上安装 其中一个函数执行许多操作,然后将数据推送到另一个需要凭据的位置。当函数在本地运行时,这是通过配置文件处理的,但是如果函数在DataRicks上运行,我们希望将这些凭证存储在DataRicks secret(作用域)中 然而,试图做一些像 from pyspark.context import SparkContext from

我们有一个自定义python包,托管在私有bitbucket repo上,可以通过
%pip install git+https/…
在任何databricks笔记本上安装

其中一个函数执行许多操作,然后将数据推送到另一个需要凭据的位置。当函数在本地运行时,这是通过配置文件处理的,但是如果函数在DataRicks上运行,我们希望将这些凭证存储在DataRicks secret(作用域)中

然而,试图做一些像

from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext.getOrCreate()
spark = SparkSession(sc)
from pyspark.dbutils import DBUtils
dbutils = DBUtils(spark)
pw = dbutils.secrets.get(scope = <SCOPE>, key = <KEY>) 
考虑到我们可能希望使用计划作业定期运行此功能,创建有时间限制的特权令牌似乎不是一种可行的方法


是否有一种方法可以使这一点起作用,或者是否有一种替代的/更好的方法,我们应该遵循?

适用于将来可能遇到相同问题的其他人。在我的函数中使用此代码段最终为我工作:

import IPython
dbutils = IPython.get_ipython().user_ns["dbutils"]

您是否尝试在笔记本中执行该代码?嘿@alex,没有,因为dbutils在笔记本中直接可用。但是,当运行上面的代码时,我确实会遇到相同的错误,因此导入后它不起作用可能并不令人惊讶,即使您在笔记本中这样做,那么您也不需要导入它……不过,我没有。我只是测试它来回答这个问题。这个软件包通常只在本地使用,也可以在Databrick中使用。
import IPython
dbutils = IPython.get_ipython().user_ns["dbutils"]