[英]How to partially update data with FastAPI and PyDantic BaseModel using PATCH
[英]pydantic BaseModel not found in Fastapi
我在 Kubuntu 18.04 上有python3 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
並且問題消失了。
通過 pip 安裝 mypy
pip install mypy
在 VScode 中打開命令面板
Ctrl+Shift+P
在命令面板中輸入:
Python: Select Linter
然后是mypy
列表中的 Select mypy
VS代碼中高亮的問題,可能是因為你沒有打開文件夾。 這很煩人,因為它也經常發生在我身上(而且我的配置基本相同)。
關於您提到的第二個問題,可能是由於腳本所在的文件夾沒有__init__.py
文件。 如果添加它,它應該可以工作,因為 python 會將文件夾解釋為模塊。
作為替代方案,您可以嘗試使用頂部文件夾中的完整路徑導入(例如from app.module.main import app
)。
有關模塊的更多信息,請參見以下鏈接:
這是二進制/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.