Как сделать что бы по команде poetry run start запускался fastapi проект? Что здесь не так?

pyproject.toml

[tool.poetry.scripts]
start = "uvicorn --reload app:create_app --port 5000"

poetry run start

ошибка

No file/folder found for package

Ответы (1 шт):

Автор решения: insolor

В [tool.poetry.scripts] должна быть не команда (как если вы в командной строке вызываете), а имя пакета (пакетов) через точку, имя модуля и через двоеточие имя функции, например:

[tool.poetry.scripts]
start = "имя_пакета.имя_модуля:start_uvicorn"

Это примерно аналогично такому коду:

from имя_пакета.имя_модуля import start_uvicorn
start_uvicorn()

В папке имя_пакета должен быть файл имя_модуля.py, в нем должна быть функция start_uvicorn, например, с таким содержимым:

import uvicorn
from fastapi import FastAPI

app = FastAPI()

...

def start_uvicorn():
    uvicorn.run(app, port=5000, reload=True)

Соответственно, при запуске в командной строке poetry run start выполнится функция start_uvicorn.

→ Ссылка