如何在Databricks Worker上安装Python包且避免重启Python解释器?
在Databricks Worker上安装Python包且不重启解释器的解决方案
问题背景
生产环境机器学习任务持续失败,报错信息如下:
InvalidConfigurationError: You haven't configured the CLI yet! Please configure by entering
/databricks/python_shell/scripts/PythonShell.py configure
改用%pip install替代原有的%sh pip install后,解决了上述报错,但%pip命令会触发Python解释器重启,导致之前的计算结果全部丢失。需要找到无需重启解释器的包安装方法。
可行解决方案
1. 代码内直接调用pip(临时应急场景)
直接在Python代码中执行pip安装,无需使用魔法命令,不会触发解释器重启:
import sys from subprocess import check_call # 替换为实际需要安装的包名 check_call([sys.executable, "-m", "pip", "install", "--no-cache-dir", "your-target-package"]) # 若需立即使用新安装的包,重新加载模块 import importlib import your_target_package importlib.reload(your_target_package)
注意:该方式仅对当前会话有效,集群重启后需重新执行安装。
2. 集群级预安装包(生产环境推荐)
通过集群配置预安装包,从根源避免临时安装带来的问题:
- 进入Databricks集群配置页面,打开Libraries选项卡
- 点击Install New,选择PyPI类型,输入目标包名后确认安装
- 重启集群,所有Worker节点将预装该包,任务运行时无需再执行安装操作
3. 初始化脚本批量安装(复杂场景)
若需批量安装多个包或执行复杂安装逻辑,使用集群初始化脚本:
- 创建Shell脚本(如
install_deps.sh),内容示例:
#!/bin/bash /databricks/python/bin/pip install package1 package2 package3
- 将脚本上传至DBFS或云存储服务
- 在集群配置的Advanced Options → Init Scripts中添加脚本路径
- 重启集群,脚本会在每个Worker节点启动时自动执行安装,不影响任务运行时的解释器状态
补充提示
生产环境应优先采用集群预安装或初始化脚本的方式,避免在任务执行中途临时安装包,保证任务稳定性。%pip魔法命令的重启机制是Databricks的设计逻辑,用于确保包在整个会话中全局生效,临时场景可优先使用代码内调用pip的方式。
内容的提问来源于stack exchange,提问作者Mikee
相关产品推荐
相关产品推荐

