build_nuitka.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env python3
  2. import os
  3. import subprocess
  4. import sys
  5. import multiprocessing
  6. def main():
  7. main_file = "main_robot.py"
  8. output_name = "robot_ai"
  9. build_dir = "build"
  10. if not os.path.exists(main_file):
  11. print("错误: 找不到 main_robot.py")
  12. return False
  13. jobs = multiprocessing.cpu_count()
  14. # 使用参数列表以避免在 Windows PowerShell 下多行续行被误解析
  15. cmd = [
  16. sys.executable,
  17. "-m",
  18. "nuitka",
  19. "--standalone",
  20. f"--jobs={jobs}",
  21. f"--output-dir={build_dir}",
  22. f"--output-filename={output_name}",
  23. "--nofollow-import-to=pytest,unittest,setuptools",
  24. "--include-module=socket",
  25. "--include-module=ssl",
  26. "--include-data-dir=config=config",
  27. # 显式包含 AIUI 运行所需的本地库
  28. # Windows x64 AIUI 动态库
  29. "--include-data-files=config/aiui/x64/*.dll=config/aiui/x64/",
  30. # Linux aarch64 AIUI 动态库(生产环境)
  31. "--include-data-files=config/aiui/arm/*.so=config/aiui/arm/",
  32. main_file,
  33. ]
  34. print("执行:", " ".join(cmd))
  35. # 不使用 shell,避免转义与续行差异导致参数丢失
  36. return subprocess.run(cmd).returncode == 0
  37. if __name__ == "__main__":
  38. sys.exit(0 if main() else 1)