You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy连接Cloud Spanner报NoSuchModuleError问题排查与解决

SQLAlchemy连接Cloud Spanner方言加载失败问题解决记录

环境与初始配置

使用SQLAlchemy 1.3.23版本和python-spanner-sqlalchemy库连接Cloud Spanner,依赖管理工具为Poetry,初始依赖配置如下:

sqlalchemy = "~1.3"
sqlalchemy-spanner = { git="旧版项目仓库地址", tag="v0.1.0" }

调用create_engine的代码:

create_engine("spanner:///projects/my-project/instances/my-instance/databases/my-db")

触发报错:sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:spanner

排查过程

方言注册验证

参考python-spanner-sqlalchemy测试包中的conftest.py文件,在调用create_engine前添加方言注册代码:

from sqlalchemy.dialects import registry
registry.register("spanner", "google.cloud.sqlalchemy_spanner", "SpannerDialect")

此时触发新报错:ModuleNotFoundError: No module named 'google.cloud.sqlalchemy_spanner'
经查该库的setup.py文件第49行已正确配置方言对应的入口点:

entry_points={
    "sqlalchemy.dialects": [
        "spanner = google.cloud.sqlalchemy_spanner:SpannerDialect"
    ]
},

手动安装验证

按照该Spanner项目README指引,克隆仓库后执行python setup.py install安装,尝试让项目识别该库时做了如下操作:

  • 完成本地库安装
  • 执行poetry add sqlalchemy-spanner添加依赖,报错Could not find a matching version of package sqlalchemy-spanner
  • 执行pip install sqlalchemy-spanner==查询可用版本,无返回结果

运行环境验证

  • 通过pip install /path/to/project成功安装本地版python-spanner-sqlalchemy,但仍存在方言加载失败的问题
  • 在代码中添加from google.cloud.sqlalchemy_spanner import SpannerDialect导入语句,PyCharm可自动补全说明包已安装,但运行时仍提示google.cloud.sqlalchemy_spanner模块不存在
  • 在项目根目录启动Python REPL,可正常导入SpannerDialect无报错

最终解决方案

将sqlalchemy-spanner依赖的git仓库地址更换为项目迁移后的官方新地址即可解决问题,该项目近期已从cloudspannerecosystem组织迁移至googleapis组织下。


内容的提问来源于stack exchange,提问作者James B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:42:00