Docker容器中Mypy检测Psycopg代码报错的解决方法咨询
Docker容器中Mypy检测Psycopg代码报错的解决方法咨询
大家好,我在Docker容器里的Python项目中用mypy做代码类型检查,用到了psycopg和SQLAlchemy这两个库,但最近碰到了和psycopg相关的类型检查问题,折腾了好几个方案都没解决,想请教下大家怎么处理。
当我执行命令mypy src/datasets/database.py时,出现了和psycopg相关的错误:
/usr/local/lib/python3.10/site-packages/psycopg/_cmodule.py:1: error: disable_error_code: Invalid error code(s): import-not-found [misc] Found 1 error in 1 file (checked 1 source file)
我的mypy配置是在pyproject.toml里这样设置的:
[[tool.mypy.overrides]] module = "psycopg.*" ignore_missing_imports = true
项目中的database.py代码如下:
from typing import Any, Dict import pandas as pd import sqlalchemy.orm.decl_api from kedro.extras.datasets.pandas.sql_dataset import SQLTableDataSet from kedro.utils import load_obj from sqlalchemy.dialects.postgresql import insert as pg_insert class SQLTableORMDataset(SQLTableDataSet): def __init__( self, orm_model: str, credentials: Dict[str, Any], load_args: Dict[str, Any] = None, save_args: Dict[str, Any] = None, ) -> None: self.orm_model: sqlalchemy.orm.decl_api.DeclarativeBase = load_obj(orm_model) super().__init__(table_name=self.table_name, credentials=credentials, load_args=load_args, save_args=save_args) @property def table_name(self): return self.orm_model.__table__.name @property def table_schema(self): return self.orm_model.__table__.schema def delete_rows(self): engine = self.engines[self._connection_str] with engine.begin() as conn: statement = sqlalchemy.delete(self.orm_model).where(sqlalchemy.text("true")) conn.execute(statement) def upsert_data(self, data: pd.DataFrame): engine = self.engines[self._connection_str] with engine.begin() as conn: for row in data.to_dict(orient="records"): stmt = pg_insert(self.orm_model).values(**row) # type: ignore on_conflict_stmt = stmt.on_conflict_do_update( index_elements=["foo"], set_=row, ) conn.execute(on_conflict_stmt)
环境信息
- Python版本:3.10
psycopg2版本:3.2.4mypy版本:1.1.1types-psycopg2版本:2.9.21.20241019sqlalchemy:~2.0psycopg[binary]:~3.1
我的问题
我已经尝试了好几种排查方法,但还是一直遇到和psycopg2及其类型存根相关的错误。有没有人知道怎么解决这个问题?或者在Docker环境里,是不是需要特定的配置才能让psycopg2的类型存根和mypy正常配合使用?
备注:内容来源于stack exchange,提问作者txg
相关产品推荐
相关产品推荐

