Azure Databricks中如何调用Shared文件夹下其他脚本的函数
Azure Databricks 跨脚本复用工具函数解决方案
问题原因说明
你之前使用%run出现全量执行代码的问题,是因为%run的设计逻辑是将目标脚本的所有代码完整注入当前执行上下文运行,因此会触发if __name__ == "__main__"包裹的业务逻辑,不适合工具函数复用场景。
可用解决方案
方案1:通过工作区挂载路径直接导入(最便捷,适合小范围复用)
Azure Databricks 11.3及以上版本的Runtime默认将整个工作区挂载到计算节点的/workspace路径下,可直接遵循Python标准导入规则调用,不会执行if __name__ == "__main__"包裹的代码。
操作代码如下:
import sys # 此处路径替换为你存放dev_tools.py的父目录的绝对路径 sys.path.append("/workspace/Shared") # 直接导入需要的函数即可 from dev_tools import multiply # 调用示例 print(multiply(3,4))
如果后续修改了dev_tools.py的内容,可通过重载模块获取最新代码,无需重启集群:
import importlib import dev_tools importlib.reload(dev_tools) from dev_tools import multiply
方案2:打包为Python包全局复用(适合多团队/全场景复用)
如果需要让全公司多个用户都能便捷调用dev_tools中的工具,可按如下操作配置:
- 按Python包规范整理dev_tools代码,补充
setup.py或pyproject.toml配置文件 - 将代码打包为wheel格式的安装包
- 将wheel包上传到Azure Databricks工作区库/集群库,关联到业务使用的集群
- 所有使用对应集群的脚本都可以直接执行
from dev_tools import multiply调用,无需额外配置路径
内容的提问来源于stack exchange,提问作者Ashish soni
相关产品推荐
相关产品推荐

