使用Databricks VS Code扩展运行Python脚本时模块导入失败如何解决?
解决Databricks VS Code扩展中Python模块导入失败的问题
问题核心
报错的根本原因是Python解释器无法定位default_py包,主要和VS Code工作区路径指向以及PYTHONPATH配置不匹配有关。
解决方案
1. 修正VS Code工作区目录
VS Code的${workspaceFolder}变量基于当前打开的工作区目录:
- 如果当前工作区是
dbx_vscode,${workspaceFolder}/src对应的路径是dbx_vscode/src,但实际src目录在dbx_vscode/default_py/src下,路径不匹配导致找不到包。 - 正确操作:关闭当前工作区,重新打开
dbx_vscode/default_py作为工作区,此时${workspaceFolder}/src会正确指向包所在的目录。
2. 调整launch.json的PYTHONPATH(无需修改工作区时用)
如果坚持以dbx_vscode作为工作区,修改launch.json中的PYTHONPATH为实际的src路径:
{ "type": "databricks", "request": "launch", "name": "DBX (Params)", "program": "${file}", "env": { "PYTHONPATH": "${workspaceFolder}/default_py/src" }, "args": ["--catalog", "my_catalog", "--schema", "my_schema"] }
3. 确认导入语句有效性
你的main.py中from default_py import taxis的导入语句是合法的——因为src下的default_py包含__init__.py,属于标准Python包,无需修改导入语句。
4. 临时调试方案(不推荐长期使用)
若上述配置仍未生效,可在main.py最顶部手动添加路径:
import sys from pathlib import Path # 获取src目录的绝对路径 src_path = Path(__file__).parent.parent.parent sys.path.append(str(src_path)) from default_py import taxis
优化建议
简化项目结构,将src直接放在根工作区下,减少嵌套层级,后续配置和导入会更简洁:
dbx_vscode/ ├─ src/ │ └─ default_py/ │ ├─ __init__.py │ ├─ main.py │ └─ taxis.py └─ .vscode/ └─ launch.json
内容的提问来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

