Merhabalar. Bir api’ım var, localde (win10) çalışırken container(python:3.10 image) içerisinde çalışmıyor. Bildiğim her yolu denedim hiçbir şekilde geçemedim şu sorunu.
hatanın tamamı:
2023-06-13 10:21:06 Traceback (most recent call last):
2023-06-13 10:21:06 File "/usr/src/app/main.py", line 7, in <module>
2023-06-13 10:21:06 from routers import (autocomplete,
2023-06-13 10:21:06 File "/usr/src/app/routers/searchroute.py", line 3, in <module>
2023-06-13 10:21:06 import main
2023-06-13 10:21:06 File "/usr/src/app/main.py", line 34, in <module>
2023-06-13 10:21:06 app.include_router(searchroute.router)
2023-06-13 10:21:06 AttributeError: partially initialized module 'routers.searchroute' has no attribute 'router' (most likely due to a circular import)
proje yapısı:
.
└── app/
├── routers/
│ ├── pricesearch.py
│ ├── admin.py
│ ├── booking.py
│ └── autocomplete.py
├── main.py
├── database.py
└── models.py
main.py:
import uvicorn
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from routers import (autocomplete,
admin,
booking,
searchroute)
import models
from database import engine
models.Base.metadata.create_all(bind=engine)
app = FastAPI(
title="Flight Widget",
description="Flight Widget API"
)
origins = ["*"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
templates = Jinja2Templates(directory="./ui")
app.mount("/ui", StaticFiles(directory="ui"), name="ui")
app.include_router(autocomplete.router)
app.include_router(admin.router)
app.include_router(searchroute.router)
app.include_router(booking.router)
@app.get("/{user_key}")
def entry(user_key: str, request: Request):
return templates.TemplateResponse("index.html", context={"request": request, "data": {"user_key": user_key}})
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
Bu main dosyasında da görüldüğü üzere aslında 3 tane daha router’ım var ancak bunlarda hiçbir sorun yaşamazken sadece pricesearch’de yaşıyorum. acaba bir şekilde başka bir pricesearch’le çakışıyor ondan mı olmuyor dedim ama yok. ismini saçma sapan şeyler koyarak da denedim (başka bir şeyle çakışmayacak kadar saçma) ama hiçbir şekilde kabul ettiremedim.
pricesearch.py
from fastapi import APIRouter, Depends, Request
import json
import main
import requests
from conf import (
DEFAULT_PRICE_SEARCH_PARAMETERS,
FLIGHT_SEARCH_SERVICE_URI,
GET_OFFERS_SERVICE_URI,
GET_PAGING_DATA_REQUEST_BODY,
GET_PAGING_DATA_SERVICE_URI,
URL,
)
import deps
import schemas
router = APIRouter(tags=["Price Search"])
@router.get("/pricesearch")
def price_search_html(
request: Request,
search_id: str,
token=Depends(deps.check_token),
):
headers = {"Authorization": f"Bearer {token}"}
data = GET_PAGING_DATA_REQUEST_BODY
data["searchId"] = search_id
url = URL + GET_PAGING_DATA_SERVICE_URI
r = requests.post(url, json=data, headers=headers)
data = r.json()
return main.templates.TemplateResponse("oneway.html", context={"request": request, "data": data})
bir fikri olan var mı acaba?