使用databricks-connect运行代码时遇ModuleNotFoundError: No module named 'calculations'求助
解决Databricks Connect中ModuleNotFoundError的问题
问题原因
本地运行时,IDE或Python环境自动将项目根目录加入了sys.path,但Databricks Connect的执行环境默认不会包含你的项目根目录,导致无法找到calculations模块。
解决方案
1. 手动将项目根目录添加到sys.path
在project.py的最开头添加以下代码,动态获取项目根目录并加入Python路径:
import sys from pathlib import Path # 获取当前文件所在目录 current_dir = Path(__file__).parent # 项目根目录是当前目录的上级目录 root_dir = current_dir.parent # 将根目录加入sys.path sys.path.append(str(root_dir)) # 之后正常导入模块 from calculations.calculation1 import calculation1 from calculations.calculation2 import calculation2
2. 配置Databricks工作区路径映射
如果代码已上传到Databricks工作区,确保项目根目录被加入Python路径。可以通过dbutils添加:
import sys from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() dbutils = spark.sparkContext._jvm.com.databricks.backend.daemon.driver.dbutils.DBUtils(spark.sparkContext) # 替换为你的项目在Databricks工作区的实际根路径 root_path = "/dbfs/your_project_root_folder" sys.path.append(root_path)
3. 检查Databricks Connect配置
运行databricks-connect configure重新配置,确认本地项目目录与Databricks工作区的路径映射正确,确保代码目录被正确同步到Databricks环境中。
4. 使用相对导入(需调整包结构)
将整个项目作为Python包,修改project.py中的导入语句为相对导入:
from ..calculations.calculation1 import calculation1 from ..calculations.calculation2 import calculation2
注意:这种方式需要确保运行时是从项目根目录作为包的顶层执行,可能需要配合python -m final_combinations.project的方式启动,在Databricks环境中需额外配置包结构支持。
内容的提问来源于stack exchange,提问作者hhp
相关产品推荐
相关产品推荐

