python-3.x FastAPI:“导入错误:尝试使用未知的父包进行相对导入”

igsr9ssn  于 2023-01-27  发布在  Python
关注(0)|答案(2)|浏览(232)

我是FastAPI的新手,在导入其他文件时遇到了这个问题。
我得到错误:‍‍‍‍

from . import schemas
ImportError: attempted relative import with no known parent package

对于上下文,我导入的文件是一个名为Blog的文件夹。我看到某些StackOverflow回答说,我应该写from . import schemas而不是from Blog import schemas。即使他们的解决方案是正确的,我在运行python程序时没有收到任何错误,当我尝试使用uvicorn运行FastAPI时,我收到这个错误,我的localhost页面无法加载。

File "./main.py", line 2, in <module>
from Blog import schemas
ModuleNotFoundError: No module named 'Blog'

文件结构如下所示:

主文件的代码如下所示:

from fastapi import FastAPI
from Blog import schemas, models
from database import engine

app = FastAPI()

models.Base.metadata.create_all(engine)

@app.post('/blog')
def create(request: schemas.Blog):
    return request

schemas.py

from pydantic import BaseModel

class Blog(BaseModel):
    title: str
    body: str

database.py

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQLALCHAMY_DATABASE_URL = 'sqlite:///./blog.db'

engine = create_engine(SQLALCHAMY_DATABASE_URL, connect_args={"check_same_thread": False})

SessionLocal = sessionmaker(bind=engine, autocommit=False, autoflush=False)

Base = declarative_base()

models.py

from sqlalchemy import *
from database import Base

class Blog(Base):
    __tablename__ = 'blogs'
    id = Column(Integer, primary_key=True, index=True)
    title = Column(String)
    body = Column(String)

SwaggerUI也没有加载。
任何帮助都将不胜感激!:)

9cbw7uwe

9cbw7uwe1#

由于schemas.pymodels.py文件与main.py文件位于同一目录中,因此应按如下方式导入这两个模块,而不是使用from Blog import schemas, models

import schemas, models

有关更多详细信息和示例,请查看this answer以及this answerthis answer

ozxc1zmp

ozxc1zmp2#

你好,我帮助这样(没有点):

from models import User
## instead of 
# from .models import User

相关问题