rasa_run.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import subprocess
  2. from pathlib import Path
  3. import sys
  4. import logging
  5. import shutil
  6. # 设置日志记录
  7. logging.basicConfig(level=logging.DEBUG, filename='rasa_run.log', filemode='w',
  8. format='%(name)s - %(levelname)s - %(message)s')
  9. # 获取 rasa 命令的路径
  10. rasa_path = r"D:\Anaconda3\envs\lq1\Scripts\rasa.exe"
  11. if not rasa_path:
  12. logging.error("Rasa 命令未找到,请检查是否已正确安装")
  13. print("Rasa 命令未找到,请检查是否已正确安装", file=sys.stderr)
  14. sys.exit(1) # 确保程序退出
  15. def get_resource_path(relative_path):
  16. """获取资源的真实路径"""
  17. if getattr(sys, 'frozen', False):
  18. # 如果是打包后的exe程序,则获取临时目录下的资源路径
  19. base_path = Path(sys._MEIPASS)
  20. else:
  21. # 否则,获取当前文件所在目录
  22. base_path = Path(__file__).resolve().parent
  23. return str(base_path / relative_path)
  24. def main():
  25. # 获取模型路径(假设你有一个名为 'models' 的文件夹)
  26. model_filename = "20241127-105650.tar.gz"
  27. model_path = get_resource_path(f"models/{model_filename}")
  28. # 获取 endpoints.yml 路径
  29. endpoints_path = get_resource_path("endpoints.yml")
  30. # 输出调试信息
  31. logging.info(f"模型路径: {model_path}")
  32. logging.info(f"端点配置路径: {endpoints_path}")
  33. # 确保模型文件和 endpoints 文件存在
  34. if not Path(model_path).is_file() or not Path(endpoints_path).is_file():
  35. logging.error("模型文件或端点配置文件不存在")
  36. print("模型文件或端点配置文件不存在", file=sys.stderr)
  37. return
  38. # 启动 Rasa 服务器
  39. try:
  40. logging.info("启动 Rasa 服务器...")
  41. command = [
  42. rasa_path,
  43. 'run',
  44. '--model', model_path,
  45. '--endpoints', endpoints_path # 添加 endpoints 参数
  46. ]
  47. subprocess.run(command, check=True) # 将 check=True 用于捕获错误
  48. except subprocess.CalledProcessError as e:
  49. logging.error(f"启动 Rasa 服务器失败: {e}")
  50. print(f"启动 Rasa 服务器失败: {e}", file=sys.stderr)
  51. except FileNotFoundError:
  52. logging.error("Rasa 命令未找到,请检查是否已正确安装并包含在打包文件中")
  53. print("Rasa 命令未找到,请检查是否已正确安装并包含在打包文件中", file=sys.stderr)
  54. except Exception as e:
  55. logging.exception("发生意外错误")
  56. print(f"发生意外错误: {e}", file=sys.stderr)
  57. if __name__ == '__main__':
  58. main()
  59. if __name__ == '__main__':
  60. main()