簡體   English   中英

在 Fastapi 中找不到 pydantic BaseModel

[英]pydantic BaseModel not found in Fastapi

我在 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

我曾嘗試使用pydantic重新安裝pip3 ,但它告訴我:

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

你注意到的第一件事

在 Fastapi 中找不到 pydantic BaseModel

與您的 linter 有關。 當我的pylint是 pylint 時,我得到了同樣的警告,所以我將 linter 從pylint更改為mypy並且問題消失了。

  1. 通過 pip 安裝 mypy

    pip install mypy

  2. 在 VScode 中打開命令面板

    Ctrl+Shift+P

  3. 在命令面板中輸入:

    Python: Select Linter

  4. 然后是mypy列表中的 Select mypy

VS代碼中高亮的問題,可能是因為你沒有打開文件夾。 這很煩人,因為它也經常發生在我身上(而且我的配置基本相同)。

關於您提到的第二個問題,可能是由於腳本所在的文件夾沒有__init__.py文件。 如果添加它,它應該可以工作,因為 python 會將文件夾解釋為模塊。

作為替代方案,您可以嘗試使用頂部文件夾中的完整路徑導入(例如from app.module.main import app )。

有關模塊的更多信息,請參見以下鏈接:

Python 3.8 模塊

真正的Python

這是二進制/C 擴展的常見問題。 有關更多詳細信息,請在此處查看:( Pylint 和 C 擴展

要修復它,您需要添加以下 to.pylintrc 文件(如果您願意,可以將此文件添加到當前項目文件夾中)

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

請注意,切換到 mypy (如此處的另一個答案所建議的那樣)不是正確的方法,因為 pylint 和 mypy 是兩個不同的東西(前者是linter而后者是一種類型檢查器

在 vscode 上測試:

在您的工作區文件夾中,指定選項

pylintrc

或者

.pylintrc

選項文件,如Pylint 命令行參數中所指定,使用以下命令: pylint --generate-rcfile >.pylintrc

尋找extention-pkg-allow-list ,在=后面加上pydantic ,生成options文件后應該是這樣的: extention-pkg-allow-list=

當你添加 pydantic 時,它應該是這樣的:

extention-pkg-allow-list=pydantic

這應該可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM