Files
full-stack-doc/backend/start_simple.py
2025-10-14 20:05:29 +08:00

92 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# 简化版启动脚本,解决模块导入问题
import os
import sys
from pathlib import Path
# 添加当前目录到Python路径
current_dir = Path(__file__).parent
sys.path.insert(0, str(current_dir))
print(f"当前目录: {current_dir}")
print(f"Python路径: {sys.path[:3]}...")
# 检查必要目录
required_dirs = ['app', 'app/core', 'app/api/v1/endpoints']
for dir_path in required_dirs:
full_path = current_dir / dir_path
if not full_path.exists():
print(f"创建目录: {dir_path}")
full_path.mkdir(parents=True, exist_ok=True)
# 创建__init__.py
init_file = full_path / '__init__.py'
if not init_file.exists():
init_file.write_text(f'"""{dir_path} 模块包"""\n')
try:
# 测试导入
print("测试导入模块...")
from app.core.config import settings
print("✓ app.core.config 导入成功")
from app.api.v1.endpoints import health, auth, files
print("✓ app.api.v1.endpoints 导入成功")
# 启动FastAPI应用
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
app = FastAPI(
title="云盘应用 API",
description="现代化的云存储Web应用后端API",
version="1.0.0",
docs_url="/docs",
redoc_url="/redoc"
)
# CORS中间件
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 临时允许所有来源
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 包含路由
app.include_router(health.router, prefix="/api/v1", tags=["health"])
app.include_router(auth.router, prefix="/api/v1/auth", tags=["authentication"])
app.include_router(files.router, prefix="/api/v1/files", tags=["files"])
@app.get("/")
async def root():
return {"message": "云盘应用 API", "version": "1.0.1"}
print("✓ FastAPI应用创建成功")
# 启动服务
print("启动服务...")
print("访问地址: http://localhost:8000")
print("API文档: http://localhost:8000/docs")
uvicorn.run(
app,
host="0.0.0.0",
port=8000,
reload=False # 关闭热重载避免问题
)
except ImportError as e:
print(f"导入错误: {e}")
print("\n可能的解决方案:")
print("1. 确保在正确的目录运行包含main.py的目录")
print("2. 安装依赖: pip install fastapi uvicorn sqlalchemy pymysql redis python-jose passlib python-multipart pydantic pydantic-settings httpx python-dotenv loguru")
print("3. 检查app目录结构是否完整")
sys.exit(1)
except Exception as e:
print(f"启动错误: {e}")
sys.exit(1)