python-3.x 为什么mypy不能和sqlalchemy一起工作?

5vf7fwbs  于 2023-01-18  发布在  Python
关注(0)|答案(2)|浏览(179)

我有下面的代码(片段):

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。
我可以做些什么来调试更多的错误?

igsr9ssn

igsr9ssn1#

我认为这是一个SQL炼金术的问题。
sqlalchemy.ext.声明性包现在集成到了sqlalchemy.orm命名空间中
https://docs.sqlalchemy.org/en/14/changelog/migration_14.html#change-5508
看起来它不能正确地与mypy工作,但我没有深入挖掘。
当我用“老方法”导入declarative_base时,它运行得很好,如下所示:

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
puruo6ea

puruo6ea2#

使用sqlalchemy2-stubs安装sqlalchemy
诗加“炼金术”
然后将mypy.ini更新为
插件= sql炼金术.扩展.我的.插件

相关问题