1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import subprocess
- from pathlib import Path
- import sys
- import logging
- import shutil
- # 设置日志记录
- logging.basicConfig(level=logging.DEBUG, filename='rasa_run.log', filemode='w',
- format='%(name)s - %(levelname)s - %(message)s')
- # 获取 rasa 命令的路径
- rasa_path = r"D:\Anaconda3\envs\lq1\Scripts\rasa.exe"
- if not rasa_path:
- logging.error("Rasa 命令未找到,请检查是否已正确安装")
- print("Rasa 命令未找到,请检查是否已正确安装", file=sys.stderr)
- sys.exit(1) # 确保程序退出
- def get_resource_path(relative_path):
- """获取资源的真实路径"""
- if getattr(sys, 'frozen', False):
- # 如果是打包后的exe程序,则获取临时目录下的资源路径
- base_path = Path(sys._MEIPASS)
- else:
- # 否则,获取当前文件所在目录
- base_path = Path(__file__).resolve().parent
- return str(base_path / relative_path)
- def main():
- # 获取模型路径(假设你有一个名为 'models' 的文件夹)
- model_filename = "20241127-105650.tar.gz"
- model_path = get_resource_path(f"models/{model_filename}")
- # 获取 endpoints.yml 路径
- endpoints_path = get_resource_path("endpoints.yml")
- # 输出调试信息
- logging.info(f"模型路径: {model_path}")
- logging.info(f"端点配置路径: {endpoints_path}")
- # 确保模型文件和 endpoints 文件存在
- if not Path(model_path).is_file() or not Path(endpoints_path).is_file():
- logging.error("模型文件或端点配置文件不存在")
- print("模型文件或端点配置文件不存在", file=sys.stderr)
- return
- # 启动 Rasa 服务器
- try:
- logging.info("启动 Rasa 服务器...")
- command = [
- rasa_path,
- 'run',
- '--model', model_path,
- '--endpoints', endpoints_path # 添加 endpoints 参数
- ]
- subprocess.run(command, check=True) # 将 check=True 用于捕获错误
- except subprocess.CalledProcessError as e:
- logging.error(f"启动 Rasa 服务器失败: {e}")
- print(f"启动 Rasa 服务器失败: {e}", file=sys.stderr)
- except FileNotFoundError:
- logging.error("Rasa 命令未找到,请检查是否已正确安装并包含在打包文件中")
- print("Rasa 命令未找到,请检查是否已正确安装并包含在打包文件中", file=sys.stderr)
- except Exception as e:
- logging.exception("发生意外错误")
- print(f"发生意外错误: {e}", file=sys.stderr)
- if __name__ == '__main__':
- main()
- if __name__ == '__main__':
- main()
|