fix: Windows compatibility and startup scripts
- Add explicit .env loading in config.py for Windows compatibility - Add backend directory to sys.path in main.py to fix module imports - Add start.bat and start-full.bat for Windows startup - Add frontend/package-lock.json for dependency tracking Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,9 +1,17 @@
|
||||
import base64
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from pydantic import field_validator
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
# Load .env file explicitly - Windows compatibility
|
||||
# This ensures environment variables are loaded before Settings instantiation
|
||||
_env_path = Path(__file__).parent.parent.parent / '.env'
|
||||
if _env_path.exists():
|
||||
from dotenv import load_dotenv
|
||||
load_dotenv(_env_path, override=True)
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
"""应用配置,从环境变量加载."""
|
||||
|
||||
@@ -8,8 +8,15 @@ This module creates and configures the FastAPI application with:
|
||||
- CORS middleware
|
||||
- Exception handlers
|
||||
"""
|
||||
from contextlib import asynccontextmanager
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add backend directory to Python path for imports to work
|
||||
backend_dir = Path(__file__).parent.parent
|
||||
if str(backend_dir) not in sys.path:
|
||||
sys.path.insert(0, str(backend_dir))
|
||||
|
||||
from contextlib import asynccontextmanager
|
||||
from typing import Callable
|
||||
|
||||
from fastapi import FastAPI, Request, status
|
||||
|
||||
1758
frontend/package-lock.json
generated
Normal file
1758
frontend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
100
start-full.bat
Normal file
100
start-full.bat
Normal file
@@ -0,0 +1,100 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
echo ========================================
|
||||
echo Git Repo Manager - 一键安装启动
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
REM 步骤 1: 检查 Python
|
||||
python --version >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [错误] 未找到 Python!
|
||||
echo 请先安装 Python 3.8+: https://www.python.org/downloads/
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [√<>] Python 已安装
|
||||
echo.
|
||||
|
||||
REM 步骤 2: 检查 Node.js
|
||||
node --version >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [警告] 未找到 Node.js,前端开发需要用到
|
||||
echo 安装 Node.js: https://nodejs.org/
|
||||
echo.
|
||||
)
|
||||
|
||||
REM 步骤 3: 检查 .env 文件
|
||||
if not exist ".env" (
|
||||
if exist ".env.example" (
|
||||
echo [1/4] 复制 .env.example 到 .env...
|
||||
copy .env.example .env >nul
|
||||
echo [提示] 请编辑 .env 文件,设置您的密钥!
|
||||
echo 需要设置 GM_ENCRYPT_KEY 和 GM_API_TOKEN
|
||||
echo.
|
||||
notepad .env
|
||||
pause
|
||||
) else (
|
||||
echo [错误] .env.example 文件不存在!
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo [1/4] .env 配置文件已存在... ✓
|
||||
)
|
||||
echo.
|
||||
|
||||
REM 步骤 4: 安装 Python 依赖
|
||||
echo [2/4] 检查 Python 依赖...
|
||||
pip show fastapi >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo 正在安装 Python 依赖...
|
||||
pip install -r backend\requirements.txt
|
||||
if errorlevel 1 (
|
||||
echo [错误] 依赖安装失败!
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo [2/4] Python 依赖已安装... ✓
|
||||
)
|
||||
echo.
|
||||
|
||||
REM 步骤 5: 初始化数据库
|
||||
if not exist "data\git_manager.db" (
|
||||
echo [3/4] 初始化数据库...
|
||||
python -m backend.init_db
|
||||
if errorlevel 1 (
|
||||
echo [错误] 数据库初始化失败!
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo [3/4] 数据库已初始化... ✓
|
||||
)
|
||||
echo.
|
||||
|
||||
REM 步骤 6: 安装前端依赖(可选)
|
||||
if exist "frontend\package.json" (
|
||||
if not exist "frontend\node_modules\" (
|
||||
echo [提示] 安装前端依赖...
|
||||
echo 跳过(可选,开发模式需要)
|
||||
REM cd frontend && npm install
|
||||
)
|
||||
)
|
||||
echo.
|
||||
|
||||
REM 步骤 7: 启动服务
|
||||
echo [4/4] 启动 Git Repo Manager...
|
||||
echo.
|
||||
echo ========================================
|
||||
echo 服务地址: http://%GM_HOST%:%GM_PORT%
|
||||
echo API 文档: http://%GM_HOST%:%GM_PORT%/docs
|
||||
echo ========================================
|
||||
echo.
|
||||
echo 按 Ctrl+C 停止服务
|
||||
echo.
|
||||
|
||||
REM 启动 FastAPI 服务器
|
||||
uvicorn backend.app.main:app --host %GM_HOST% --port %GM_PORT% --reload
|
||||
46
start.bat
Normal file
46
start.bat
Normal file
@@ -0,0 +1,46 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
echo ========================================
|
||||
echo Git Repo Manager - Windows 启动脚本
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
REM 检查 .env 文件
|
||||
if not exist ".env" (
|
||||
echo [错误] .env 文件不存在!
|
||||
echo.
|
||||
echo 请先复制 .env.example 到 .env 并配置密钥:
|
||||
echo copy .env.example .env
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [1/5] 检查 .env 文件... ✓
|
||||
echo.
|
||||
|
||||
REM 检查数据库
|
||||
if not exist "data\git_manager.db" (
|
||||
echo [2/5] 数据库不存在,正在初始化...
|
||||
python -m backend.init_db
|
||||
if errorlevel 1 (
|
||||
echo [错误] 数据库初始化失败!
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo [2/5] 数据库已存在... ✓
|
||||
)
|
||||
echo.
|
||||
|
||||
REM 启动后端服务
|
||||
echo [3/5] 启动后端服务...
|
||||
echo.
|
||||
echo 后端地址: http://%GM_HOST%:%GM_PORT%
|
||||
echo API 文档: http://%GM_HOST%:%GM_PORT%/docs
|
||||
echo.
|
||||
echo 按 Ctrl+C 停止服务
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
uvicorn backend.app.main:app --host %GM_HOST% --port %GM_PORT% --reload
|
||||
Reference in New Issue
Block a user