初次提交
This commit is contained in:
131
backend/quick_fix_server.py
Normal file
131
backend/quick_fix_server.py
Normal file
@@ -0,0 +1,131 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
服务器端快速修复脚本
|
||||
修复PyInstaller打包时的database目录缺失问题
|
||||
"""
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
def fix_build_spec():
|
||||
"""修复build.spec文件,处理可选数据文件"""
|
||||
spec_file = Path('build.spec')
|
||||
|
||||
if not spec_file.exists():
|
||||
print("错误: build.spec 文件不存在")
|
||||
return False
|
||||
|
||||
# 读取原文件内容
|
||||
with open(spec_file, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# 查找并替换datas部分
|
||||
old_datas = '''# 需要包含的数据文件
|
||||
datas = [
|
||||
(str(ROOT_DIR / 'app'), 'app'), # 包含整个app目录
|
||||
('.env.example', '.'), # 包含环境配置示例文件
|
||||
('database', 'database'), # 包含数据库相关文件
|
||||
]'''
|
||||
|
||||
new_datas = '''# 需要包含的数据文件
|
||||
datas = [
|
||||
(str(ROOT_DIR / 'app'), 'app'), # 包含整个app目录
|
||||
('.env.example', '.'), # 包含环境配置示例文件
|
||||
]
|
||||
|
||||
# 可选数据文件(如果存在才包含)
|
||||
optional_files = [
|
||||
('database', 'database'), # 包含数据库相关文件
|
||||
]
|
||||
|
||||
# 添加可选数据文件
|
||||
for src, dst in optional_files:
|
||||
src_path = ROOT_DIR / src
|
||||
if src_path.exists():
|
||||
datas.append((src, dst))
|
||||
print(f"包含可选数据文件: {src}")
|
||||
else:
|
||||
print(f"跳过可选数据文件: {src} (不存在)")'''
|
||||
|
||||
if old_datas in content:
|
||||
content = content.replace(old_datas, new_datas)
|
||||
|
||||
# 写回文件
|
||||
with open(spec_file, 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
|
||||
print("✓ 已修复 build.spec 文件")
|
||||
return True
|
||||
else:
|
||||
print("build.spec 文件已经包含修复或格式不匹配")
|
||||
return False
|
||||
|
||||
def create_database_dir():
|
||||
"""创建database目录(如果不存在)"""
|
||||
db_dir = Path('database')
|
||||
|
||||
if not db_dir.exists():
|
||||
db_dir.mkdir(exist_ok=True)
|
||||
|
||||
# 创建一个空的初始化文件
|
||||
init_file = db_dir / 'init' / '.gitkeep'
|
||||
init_file.parent.mkdir(exist_ok=True)
|
||||
init_file.touch()
|
||||
|
||||
# 创建一个说明文件
|
||||
readme_file = db_dir / 'README.md'
|
||||
with open(readme_file, 'w', encoding='utf-8') as f:
|
||||
f.write("""# Database目录
|
||||
|
||||
此目录包含数据库相关的初始化脚本和配置文件。
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `init/`: 数据库初始化脚本目录
|
||||
- `create_files_table.py`: 创建文件表的脚本
|
||||
|
||||
## 注意
|
||||
|
||||
如果此目录为空,不会影响应用的正常运行。应用会自动创建所需的数据库表。
|
||||
""")
|
||||
|
||||
print("✓ 已创建 database 目录")
|
||||
return True
|
||||
else:
|
||||
print("✓ database 目录已存在")
|
||||
return True
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
print("=== 服务器端快速修复脚本 ===")
|
||||
|
||||
# 修复build.spec文件
|
||||
print("1. 修复 build.spec 文件...")
|
||||
fix_build_spec()
|
||||
|
||||
# 创建database目录
|
||||
print("\n2. 检查 database 目录...")
|
||||
create_database_dir()
|
||||
|
||||
print("\n=== 修复完成 ===")
|
||||
print("现在可以重新运行打包:")
|
||||
print("python build_linux.py")
|
||||
|
||||
# 验证修复结果
|
||||
print("\n=== 验证修复结果 ===")
|
||||
|
||||
if Path('build.spec').exists():
|
||||
print("✓ build.spec 文件存在")
|
||||
else:
|
||||
print("✗ build.spec 文件不存在")
|
||||
|
||||
if Path('database').exists():
|
||||
print("✓ database 目录存在")
|
||||
files = list(Path('database').rglob('*'))
|
||||
print(f" 包含 {len(files)} 个文件/目录")
|
||||
else:
|
||||
print("✗ database 目录不存在")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user