Skip to content

Latest commit

 

History

History
231 lines (169 loc) · 5.16 KB

File metadata and controls

231 lines (169 loc) · 5.16 KB

批处理文件修复总结

日期: 2025-01-XX
修复范围: 所有启动和停止服务的批处理文件

修复的问题

1. start_all_services.bat - 主启动脚本

问题:

  • PYTHONPATH使用相对路径%~dp0,可能导致路径问题
  • 路径没有使用引号,可能包含空格时出错
  • Python可执行文件路径没有引号

修复:

  • ✅ 使用绝对路径PROJECT_ROOT
  • ✅ 所有路径使用引号包裹
  • ✅ Python可执行文件路径使用引号
  • ✅ 添加项目根目录显示

修改内容:

REM 修复前
set PYTHONPATH=%~dp0
start ... cmd /k "cd /d %~dp0 && set PYTHONPATH=%~dp0 && python ..."

REM 修复后
set "PROJECT_ROOT=%~dp0"
set "PROJECT_ROOT=%PROJECT_ROOT:~0,-1%"
set "PYTHONPATH=%PROJECT_ROOT%"
start ... cmd /k "cd /d \"%PROJECT_ROOT%\" && set PYTHONPATH=\"%PROJECT_ROOT%\" && \"%PYTHON_AIDDTRAIN%\" ..."

2. FLASH_DOCK-main/start_flashdock_fixed.bat - FLASH-DOCK启动脚本

问题:

  • conda activate在cmd /k中可能不会持久化
  • PYTHONPATH没有正确设置
  • 没有查找conda环境

修复:

  • ✅ 直接使用conda环境的python.exe完整路径
  • ✅ 正确设置PROJECT_ROOT和PYTHONPATH
  • ✅ 自动查找conda环境(用户目录和ProgramData)
  • ✅ 显示项目根目录和FlashDock目录

修改内容:

REM 修复前
conda activate flash_dock
python -m streamlit run FlashDock.py --server.port 8501

REM 修复后
if exist "C:\ProgramData\Anaconda3\envs\flash_dock\python.exe" (
    set PYTHON_FLASHDOCK=C:\ProgramData\Anaconda3\envs\flash_dock\python.exe
)
"%PYTHON_FLASHDOCK%" -m streamlit run FlashDock.py --server.port 8501

3. restart_services_safe.bat - 重启脚本

问题:

  • 使用conda activate可能不稳定
  • PYTHONPATH设置不一致
  • 路径引号问题

修复:

  • ✅ 使用conda环境的python.exe完整路径
  • ✅ 统一PYTHONPATH设置方式
  • ✅ 所有路径使用引号
  • ✅ 添加conda环境自动查找

修复后的改进

路径处理

  • ✅ 所有路径使用绝对路径
  • ✅ 路径包含空格时正确处理
  • ✅ PROJECT_ROOT正确计算和显示

Python环境

  • ✅ 自动查找conda环境
  • ✅ 支持用户目录和ProgramData目录
  • ✅ 直接使用python.exe完整路径,避免conda activate问题

PYTHONPATH设置

  • ✅ 统一使用绝对路径
  • ✅ 在所有启动命令中正确设置
  • ✅ 使用引号包裹避免空格问题

测试建议

1. 测试启动脚本

# 双击运行或命令行执行
start_all_services.bat

检查:

  • 三个服务窗口是否正常打开
  • 服务是否正常启动
  • 是否有错误信息

2. 测试重启脚本

restart_services_safe.bat

检查:

  • 旧服务是否正常停止
  • 新服务是否正常启动
  • 端口是否正常释放和占用

3. 测试单独启动

start_registry_safe.bat
start_compass_safe.bat
cd FLASH_DOCK-main
start_flashdock_fixed.bat

检查:

  • 每个服务是否能单独启动
  • PYTHONPATH是否正确
  • 是否有导入错误

常见问题排查

问题1: 服务启动失败,提示模块找不到

原因: PYTHONPATH未正确设置

解决:

  1. 检查批处理文件中的PROJECT_ROOT是否正确
  2. 检查PYTHONPATH是否包含项目根目录
  3. 查看服务窗口中的错误信息

问题2: conda环境找不到

原因: conda环境路径不正确

解决:

  1. 检查conda环境是否存在:
    dir "%USERPROFILE%\anaconda3\envs\AIDDTRAIN"
    dir "C:\ProgramData\Anaconda3\envs\AIDDTRAIN"
  2. 如果路径不同,修改批处理文件中的路径
  3. 或使用默认python(如果已安装所需包)

问题3: 端口被占用

解决:

# 停止所有服务
stop_all.bat

# 或使用Python脚本
python stop_all_services.py

问题4: 路径包含空格

已修复: 所有路径现在都使用引号包裹

文件清单

修复的批处理文件:

  • start_all_services.bat - 主启动脚本
  • FLASH_DOCK-main/start_flashdock_fixed.bat - FLASH-DOCK启动脚本
  • restart_services_safe.bat - 重启脚本

其他批处理文件(已检查,无需修改):

  • start_registry_safe.bat - 已正确
  • start_compass_safe.bat - 已正确
  • stop_all.bat - 已正确

使用说明

推荐启动方式

方式1: 一键启动(最简单)

start_all_services.bat

方式2: 安全重启(推荐)

restart_services_safe.bat

方式3: 单独启动(用于调试)

start_registry_safe.bat
# 等待5秒
start_compass_safe.bat
# 等待5秒
cd FLASH_DOCK-main
start_flashdock_fixed.bat

验证服务运行

启动后,运行以下命令验证:

python test_flashdock_chrome.py

或访问:

总结

所有批处理文件已修复,主要改进:

  1. ✅ 路径处理更可靠(绝对路径+引号)
  2. ✅ Python环境查找更智能(自动查找conda)
  3. ✅ PYTHONPATH设置统一且正确
  4. ✅ 避免conda activate问题(直接使用python.exe)

现在可以正常使用批处理文件启动服务了!