Reputation: 13544
I have python3 3.6.9 on Kubuntu 18.04. I have installed fastapi using pip3 install fastapi
. I'm trying to test drive the framework through its official documentation and I'm in the relational database section of its guide.
In 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 code highlights an error in from pydantic import BaseModel
and it tells that: No name 'BaseModel' in module 'pydantic'
. Additionally, when I try to run uvicorn main:app reload
I have gotten the following error:
File "./main.py", line 6, in <module> from . import crud, models, schemas ImportError: attempted relative import with no known parent package
I have tried to renstall pydantic
using pip3
but it tells me that:
Requirement already satisfied: dataclasses>=0.6; python_version < "3.7" in ./.local/lib/python3.6/site-packages (from pydantic) (0.7)
Upvotes: 15
Views: 17955
Reputation: 81
My linter was Pylint. Disabling pylint was worked for me. I also have Pylance but it didn't give me the same error
Upvotes: 0
Reputation: 606
Building on the excellent answers that explain how to modify .pylintrc
, if you are using pyproject.toml
for your project you can do this instead:
[tool.pylint.main]
extension-pkg-allow-list = ["pydantic"]
Upvotes: 2
Reputation: 73
Tested on vscode:
In your workspace folder, specify Options in
pylintrc
or
.pylintrc
options file, as specified in Pylint command line argument, using this command: pylint --generate-rcfile > .pylintrc
Look for extension-pkg-allow-list
and add pydantic
after =
It should be like this after generating the options file: extension-pkg-allow-list=
When you add pydantic, it should be like this:
extension-pkg-allow-list=pydantic
This should solve your problem.
Upvotes: 6
Reputation: 706
This is a common problem with binary/C extensions. For further details, check here: (Pylint & C extensions)
To fix it, you need to add the following to .pylintrc file (You can add this file to your current project folder if you like)
[MASTER]
extension-pkg-allow-list=pydantic
Note that switching to mypy (as suggested by another answer here) is not the right approach since pylint & mypy are two different things (the former is a linter while the latter is sort of a type checker)
Upvotes: 17
Reputation: 356
The first thing that you noticed
pydantic BaseModel not found in Fastapi
is related to your linter.
I got the same warning when my linter was pylint
, so I changed the linter from pylint
to mypy
and the problem disappeared.
Install mypy via pip
pip install mypy
Open the command palette in VScode
Ctrl+Shift+P
Type this in command palett:
Python: Select Linter
Then Select mypy
in the list of linters
Upvotes: 6
Reputation: 4456
The problem of highlighting in VS code may be a problem due to the fact that you did not open the folder. It's quite annoying as it happens often to me as well (and I have basically your same config).
Regarding the second problem you mention, it is probably due to the fact that the folder in which the script lays, does not have a __init__.py
file. If you add it, it should work since python will interpret the folder as a module.
As an alternative, you could try to import with the full path from the top folder (e.g. from app.module.main import app
).
For more information about modules see the following links:
Upvotes: 2