使用Poetry安装Databricks SQL Connector extras后Pytest报ModuleNotFoundError
解决pytest中databricks-sql-connector[sqlalchemy]导入失败问题
排查步骤与解决方案
1. 确保测试环境使用正确的虚拟环境
你正常运行代码没问题,但pytest报错,大概率是测试时没用到安装了databricks-sql-connector[sqlalchemy]的虚拟环境:
- 不要直接运行
pytest,改用poetry启动测试,确保使用正确的虚拟环境:poetry run pytest tests/test_dbx.py - 若仍有问题,先激活虚拟环境再执行测试:
poetry shell pytest tests/test_dbx.py - 最后重新执行
poetry install,确保所有依赖(包括sqlalchemy extras)都安装完整
2. 检查是否存在命名冲突
如果你的src目录下存在名为databricks的文件夹或.py文件,Python会优先导入本地模块,而非第三方包的databricks,从而导致找不到sqlalchemy子模块:
- 重命名本地的
databricks相关文件/文件夹,避免与第三方包重名 - 可以在测试文件中添加以下代码验证导入路径:
运行后若输出路径不是虚拟环境import databricks print(databricks.__file__)site-packages中的databricks目录,即可确认是命名冲突问题
3. 调整pytest的pythonpath设置
你的pyproject.toml中把tests也加到了pythonpath,其实无需额外配置——pytest会自动识别tests目录,多余的配置可能打乱导入顺序:
修改为:
[tool.pytest.ini_options] pythonpath = ["src"]
验证extras依赖是否安装成功
运行以下命令,检查databricks-sql-connector的依赖列表中是否包含sqlalchemy:
poetry run pip show databricks-sql-connector
查看输出的Requires字段,若能找到sqlalchemy说明extras安装成功;若找不到,重新执行poetry add "databricks-sql-connector[sqlalchemy]"完成安装
内容的提问来源于stack exchange,提问作者Merlin
相关产品推荐
相关产品推荐

