我有下面的代码(片段):
from sqlalchemy.orm import declarative_base
Base = declarative_base()
安装管道I
$ pip install -U sqlalchemy[mypy] sqlalchemy-stubs mypy
$ pip list | egrep -i '(sqlal|mypy)'
mypy 0.982
mypy-extensions 0.4.3
SQLAlchemy 1.4.42
sqlalchemy-stubs 0.4
SQLAlchemy-Utils 0.38.3
sqlalchemy2-stubs 0.0.2a29
不过,在运行mypy file.py
时,我会得到:
$ python3 -mmypy test.py
test.py:1: error: Module "sqlalchemy.orm" has no attribute "declarative_base"
Found 1 error in 1 file (checked 1 source file)
我在虚拟环境中使用Python 3.10.5。
我可以做些什么来调试更多的错误?
2条答案
按热度按时间igsr9ssn1#
我认为这是一个SQL炼金术的问题。
sqlalchemy.ext.声明性包现在集成到了sqlalchemy.orm命名空间中
https://docs.sqlalchemy.org/en/14/changelog/migration_14.html#change-5508
看起来它不能正确地与mypy工作,但我没有深入挖掘。
当我用“老方法”导入declarative_base时,它运行得很好,如下所示:
puruo6ea2#
使用
sqlalchemy2-stubs
安装sqlalchemy诗加“炼金术”
然后将
mypy.ini
更新为插件= sql炼金术.扩展.我的.插件