rasa_run_actions.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import sys
  2. import subprocess
  3. from pathlib import Path
  4. import logging
  5. # 设置日志记录
  6. logging.basicConfig(level=logging.DEBUG, filename='app.log', filemode='w',
  7. format='%(name)s - %(levelname)s - %(message)s')
  8. def resource_path(relative_path):
  9. """ 获取附加资源的绝对路径 """
  10. try:
  11. # PyInstaller 创建临时文件夹,所有打包的文件都在此文件夹下
  12. base_path = Path(sys._MEIPASS)
  13. except Exception:
  14. base_path = Path(__file__).resolve().parent
  15. return str(base_path / relative_path)
  16. # 动态设置 Rasa SDK 的路径
  17. rasa_sdk_path = resource_path('Lib/site-packages/rasa_sdk')
  18. if rasa_sdk_path not in sys.path:
  19. sys.path.append(rasa_sdk_path)
  20. from rasa_sdk.endpoint import run as sdk_run
  21. def main():
  22. print("开始主函数...")
  23. try:
  24. # 启动 Rasa SDK 动作服务器
  25. print("尝试使用 Rasa SDK Python API 启动动作服务器...")
  26. action_package_name = "actions" # 指定包含动作的包名称
  27. sdk_run(action_package_name=action_package_name, port=5055)
  28. print("动作服务器已启动,按 Enter 键退出。")
  29. input() # 等待用户输入
  30. except Exception as e:
  31. logging.exception("通过 Python API 启动动作服务器失败")
  32. print(f"通过 Python API 启动动作服务器失败: {e}")
  33. # 作为备选方案,尝试使用 Python 解释器启动 Rasa 动作服务器
  34. try:
  35. print("尝试使用 Python 解释器启动 Rasa 动作服务器...")
  36. # 获取 Conda 环境中的 Python 解释器路径
  37. conda_env_path = Path(resource_path('.')).parents[1] # 调整路径以匹配你的实际情况
  38. python_executable = conda_env_path / 'python.exe'
  39. rasa_script = conda_env_path / 'Scripts' / 'rasa'
  40. # 使用 Python 解释器运行 rasa run actions
  41. subprocess.run([str(python_executable), str(rasa_script), 'run', 'actions'], check=True)
  42. except Exception as e:
  43. logging.exception("通过 Python 解释器启动 Rasa 动作服务器失败")
  44. print(f"通过 Python 解释器启动 Rasa 动作服务器失败: {e}")
  45. sys.exit(1)
  46. if __name__ == "__main__":
  47. main()