5

我在 Kubuntu 18.04 上有 3.6.9。我已经. pip3 install fastapi我正在尝试通过其官方文档来测试该框架,并且我在其指南的关系数据库部分

schemas.py

from typing import List

from pydantic import BaseModel

class VerseBase(BaseModel):
    AyahText: str
    NormalText: str

class Verse(VerseBase):
    id: int

    class Config:
        orm_mode = True

VS 代码突出显示一个错误,from pydantic import BaseModel并告诉它:No name 'BaseModel' in module 'pydantic'. 此外,当我尝试运行时,出现uvicorn main:app reload 以下错误:

File "./main.py", line 6, in <module>
   from . import crud, models, schemas
ImportError: attempted relative import with no known parent package

我曾尝试使用 renstall pydanticpip3但它告诉我:

Requirement already satisfied: dataclasses>=0.6; python_version < "3.7" in ./.local/lib/python3.6/site-packages (from pydantic) (0.7)
4

4 回答 4

6

你注意到的第一件事

在 Fastapi 中找不到 pydantic BaseModel

与您的 linter 有关。当我的 linter 是时,我得到了同样的警告pylint,所以我将 linter 从 更改pylintmypy并且问题消失了。

  1. 通过 pip 安装 mypy

    pip install mypy

  2. 在 VScode 中打开命令面板

    Ctrl+Shift+P

  3. 在命令面板中输入:

    Python: Select Linter

  4. 然后mypy在短绒列表中选择

于 2020-10-10T07:09:24.063 回答
5

这是二进制/C 扩展的常见问题。有关更多详细信息,请在此处查看:(Pylint & C 扩展

要修复它,您需要将以下内容添加到 .pylintrc 文件中(如果您愿意,可以将此文件添加到当前项目文件夹中)

[MASTER]
extension-pkg-allow-list=pydantic

请注意,切换到 mypy (如此处的另一个答案所建议的那样)不是正确的方法,因为 pylint 和 mypy 是两个不同的东西(前者是 linter后者是一种类型检查器

于 2021-05-16T19:14:02.270 回答
2

VS代码中高亮的问题,可能是因为你没有打开文件夹。这很烦人,因为它也经常发生在我身上(而且我的配置基本相同)。

关于您提到的第二个问题,可能是由于脚本所在的文件夹没有__init__.py文件。如果添加它,它应该可以工作,因为 python 会将文件夹解释为模块。

作为替代方案,您可以尝试使用顶部文件夹中的完整路径(例如from app.module.main import app)导入。

有关模块的更多信息,请参见以下链接:

Python 3.8 模块

真正的 Python

于 2020-06-02T20:18:54.653 回答
0

在 vscode 上测试:

在您的工作区文件夹中,指定选项

pylintrc

或者

.pylintrc

选项文件,如Pylint 命令行参数中所指定,使用以下命令:pylint --generate-rcfile > .pylintrc

查找extention-pkg-allow-list并添加pydanticafter= 生成选项文件后应该是这样的:extention-pkg-allow-list=

当你添加 pydantic 时,它应该是这样的:

extention-pkg-allow-list=pydantic

这应该可以解决您的问题。

于 2021-11-10T22:36:27.890 回答