1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import sys
- import subprocess
- from pathlib import Path
- import logging
- # 设置日志记录
- logging.basicConfig(level=logging.DEBUG, filename='app.log', filemode='w',
- format='%(name)s - %(levelname)s - %(message)s')
- def resource_path(relative_path):
- """ 获取附加资源的绝对路径 """
- try:
- # PyInstaller 创建临时文件夹,所有打包的文件都在此文件夹下
- base_path = Path(sys._MEIPASS)
- except Exception:
- base_path = Path(__file__).resolve().parent
- return str(base_path / relative_path)
- # 动态设置 Rasa SDK 的路径
- rasa_sdk_path = resource_path('Lib/site-packages/rasa_sdk')
- if rasa_sdk_path not in sys.path:
- sys.path.append(rasa_sdk_path)
- from rasa_sdk.endpoint import run as sdk_run
- def main():
- print("开始主函数...")
- try:
- # 启动 Rasa SDK 动作服务器
- print("尝试使用 Rasa SDK Python API 启动动作服务器...")
- action_package_name = "actions" # 指定包含动作的包名称
- sdk_run(action_package_name=action_package_name, port=5055)
- print("动作服务器已启动,按 Enter 键退出。")
- input() # 等待用户输入
- except Exception as e:
- logging.exception("通过 Python API 启动动作服务器失败")
- print(f"通过 Python API 启动动作服务器失败: {e}")
- # 作为备选方案,尝试使用 Python 解释器启动 Rasa 动作服务器
- try:
- print("尝试使用 Python 解释器启动 Rasa 动作服务器...")
- # 获取 Conda 环境中的 Python 解释器路径
- conda_env_path = Path(resource_path('.')).parents[1] # 调整路径以匹配你的实际情况
- python_executable = conda_env_path / 'python.exe'
- rasa_script = conda_env_path / 'Scripts' / 'rasa'
- # 使用 Python 解释器运行 rasa run actions
- subprocess.run([str(python_executable), str(rasa_script), 'run', 'actions'], check=True)
- except Exception as e:
- logging.exception("通过 Python 解释器启动 Rasa 动作服务器失败")
- print(f"通过 Python 解释器启动 Rasa 动作服务器失败: {e}")
- sys.exit(1)
- if __name__ == "__main__":
- main()
|