Как сделать что бы по команде 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.
- Документация: The pyproject.toml file: scripts
- Про использование скриптов в poetry на русском: Poetry и скрипты (hexlet)