build_runner.bat 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. @echo off
  2. setlocal EnableExtensions
  3. pushd "%~dp0"
  4. echo [1/4] Check Python 3.11 ...
  5. where py >nul 2>&1
  6. if %errorlevel%==0 (
  7. set "PYTHON=py -3.11"
  8. ) else (
  9. set "PYTHON=python"
  10. )
  11. %PYTHON% --version
  12. if %errorlevel% neq 0 (
  13. echo ERROR: Python 3.11 not found.
  14. popd
  15. pause
  16. exit /b 1
  17. )
  18. echo [2/4] Install build dependencies ...
  19. %PYTHON% -m pip install -r requirements.txt
  20. if %errorlevel% neq 0 (
  21. echo ERROR: Failed to install dependencies.
  22. popd
  23. pause
  24. exit /b 1
  25. )
  26. echo [3/4] Check required files ...
  27. if not exist "runner.py" (
  28. echo ERROR: runner.py not found.
  29. popd
  30. pause
  31. exit /b 1
  32. )
  33. if not exist "license.lic" (
  34. echo ERROR: license.lic not found.
  35. popd
  36. pause
  37. exit /b 1
  38. )
  39. if not exist "public_key.pem" (
  40. echo ERROR: public_key.pem not found.
  41. popd
  42. pause
  43. exit /b 1
  44. )
  45. if not exist "entry.cp311-win_amd64.pyd" (
  46. echo ERROR: entry.cp311-win_amd64.pyd not found.
  47. popd
  48. pause
  49. exit /b 1
  50. )
  51. if exist "entry.py" (
  52. echo ERROR: Found entry.py - remove source files before building.
  53. echo Keep only entry.cp311-win_amd64.pyd
  54. popd
  55. pause
  56. exit /b 1
  57. )
  58. if exist "data_clean.py" (
  59. echo ERROR: Found data_clean.py - remove algorithm source files before building.
  60. popd
  61. pause
  62. exit /b 1
  63. )
  64. echo [4/4] Build api_runner.exe ...
  65. if exist "runner.dist" rmdir /s /q "runner.dist"
  66. if exist "runner.build" rmdir /s /q "runner.build"
  67. set "NUITKA_CACHE_DIR=%TEMP%\nuitka-cache"
  68. %PYTHON% -m nuitka runner.py ^
  69. --standalone ^
  70. --jobs=1 ^
  71. --lto=no ^
  72. --assume-yes-for-downloads ^
  73. --output-filename=api_runner.exe ^
  74. --include-package=cryptography ^
  75. --include-package=numpy ^
  76. --include-package=pandas ^
  77. --include-package=scipy ^
  78. --include-package=matplotlib ^
  79. --enable-plugin=matplotlib ^
  80. --include-module=numpy.testing ^
  81. --nofollow-import-to=tkinter ^
  82. --nofollow-import-to=matplotlib.tests ^
  83. --nofollow-import-to=pandas.tests ^
  84. --nofollow-import-to=scipy.tests ^
  85. --include-data-files=entry.cp311-win_amd64.pyd=entry.cp311-win_amd64.pyd ^
  86. --include-data-files=license.lic=license.lic ^
  87. --include-data-files=public_key.pem=public_key.pem
  88. if %errorlevel% neq 0 (
  89. echo.
  90. echo ERROR: Build failed.
  91. popd
  92. pause
  93. exit /b 1
  94. )
  95. echo.
  96. echo SUCCESS: runner.dist\api_runner.exe
  97. echo Electron will auto-detect runner.dist folder.
  98. echo Next: cd to project root and run "npm run electron:dev"
  99. popd
  100. pause
  101. endlocal