install_env.bat 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. @echo off
  2. chcp 65001
  3. set USE_MIRROR=true
  4. echo use_mirror = %USE_MIRROR%
  5. setlocal enabledelayedexpansion
  6. cd /D "%~dp0"
  7. set PATH="%PATH%";%SystemRoot%\system32
  8. echo %PATH%
  9. :: 安装Miniconda
  10. :: 检查是否有特殊字符
  11. echo "%CD%"| findstr /R /C:"[!#\$%&()\*+,;<=>?@\[\]\^`{|}~\u4E00-\u9FFF ] " >nul && (
  12. echo.
  13. echo 当前路径中存在特殊字符,请使fish-speech的路径不含特殊字符后再运行。 && (
  14. goto end
  15. )
  16. )
  17. :: 解决跨驱动器安装问题
  18. set TMP=%CD%\fishenv
  19. set TEMP=%CD%\fishenv
  20. :: 取消激活已经激活的环境
  21. (call conda deactivate && call conda deactivate && call conda deactivate) 2>nul
  22. :: 安装路径配置
  23. set INSTALL_DIR=%cd%\fishenv
  24. set CONDA_ROOT_PREFIX=%cd%\fishenv\conda
  25. set INSTALL_ENV_DIR=%cd%\fishenv\env
  26. set PIP_CMD=%cd%\fishenv\env\python -m pip
  27. set PYTHON_CMD=%cd%\fishenv\env\python
  28. set API_FLAG_PATH=%~dp0API_FLAGS.txt
  29. set MINICONDA_DOWNLOAD_URL=https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py310_23.3.1-0-Windows-x86_64.exe
  30. set MINICONDA_CHECKSUM=307194e1f12bbeb52b083634e89cc67db4f7980bd542254b43d3309eaf7cb358
  31. set conda_exists=F
  32. :: 确定是否要安装conda
  33. call "%CONDA_ROOT_PREFIX%\_conda.exe" --version >nul 2>&1
  34. if "%ERRORLEVEL%" EQU "0" set conda_exists=T
  35. :: 下载Miniconda
  36. if "%conda_exists%" == "F" (
  37. echo.
  38. echo 正在下载Miniconda...
  39. mkdir "%INSTALL_DIR%" 2>nul
  40. :: 使用curl下载Miniconda安装程序
  41. call curl -Lk "%MINICONDA_DOWNLOAD_URL%" > "%INSTALL_DIR%\miniconda_installer.exe"
  42. :: 检查下载是否成功
  43. if errorlevel 1 (
  44. echo.
  45. echo 下载Miniconda失败
  46. goto end
  47. )
  48. :: 哈希校验
  49. for /f %%a in ('
  50. certutil -hashfile "%INSTALL_DIR%\miniconda_installer.exe" sha256
  51. ^| find /i /v " "
  52. ^| find /i "%MINICONDA_CHECKSUM%"
  53. ') do (
  54. :: 如果哈希值匹配预设的校验和,将其存储在变量中
  55. set "hash=%%a"
  56. )
  57. if not defined hash (
  58. echo.
  59. echo Miniconda安装程序的哈希值不匹配
  60. del "%INSTALL_DIR%\miniconda_installer.exe"
  61. goto end
  62. ) else (
  63. echo.
  64. echo Miniconda安装程序的哈希值成功匹配
  65. )
  66. echo 下载完成,接下来安装Miniconda至"%CONDA_ROOT_PREFIX%"
  67. start /wait "" "%INSTALL_DIR%\miniconda_installer.exe" /InstallationType=JustMe /NoShortcuts=1 /AddToPath=0 /RegisterPython=0 /NoRegistry=1 /S /D=%CONDA_ROOT_PREFIX%
  68. :: 测试是否成功安装
  69. call "%CONDA_ROOT_PREFIX%\_conda.exe" --version
  70. if errorlevel 1 (
  71. echo.
  72. echo 未安装Miniconda
  73. goto end
  74. ) else (
  75. echo.
  76. echo Miniconda安装成功
  77. )
  78. :: 删除安装程序
  79. del "%INSTALL_DIR%\miniconda_installer.exe"
  80. )
  81. :: 创建conda环境
  82. if not exist "%INSTALL_ENV_DIR%" (
  83. echo.
  84. echo 正在创建conda环境...
  85. call "%CONDA_ROOT_PREFIX%\_conda.exe" create --no-shortcuts -y -k --prefix "%INSTALL_ENV_DIR%" -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ python=3.10
  86. :: 检查环境创建是否成功
  87. if errorlevel 1 (
  88. echo.
  89. echo 创建conda环境失败
  90. goto end
  91. )
  92. )
  93. :: 检查是否真的创建了环境
  94. if not exist "%INSTALL_ENV_DIR%\python.exe" (
  95. echo.
  96. echo Conda环境不存在
  97. goto end
  98. )
  99. :: 环境隔离
  100. set PYTHONNOUSERSITE=1
  101. set PYTHONPATH=
  102. set PYTHONHOME=
  103. set "CUDA_PATH=%INSTALL_ENV_DIR%"
  104. set "CUDA_HOME=%CUDA_PATH%"
  105. :: 激活环境
  106. call "%CONDA_ROOT_PREFIX%\condabin\conda.bat" activate "%INSTALL_ENV_DIR%"
  107. :: 检查环境是否成功激活
  108. if errorlevel 1 (
  109. echo.
  110. echo 环境激活失败
  111. goto end
  112. ) else (
  113. echo.
  114. echo 环境激活成功
  115. )
  116. :: 安装依赖
  117. set "packages=torch torchvision torchaudio openai-whisper fish-speech"
  118. :: 检查包是否已安装,如果没有安装则添加到需要安装的包列表
  119. set "install_packages="
  120. for %%p in (%packages%) do (
  121. %PIP_CMD% show %%p >nul 2>&1
  122. if errorlevel 1 (
  123. set "install_packages=!install_packages! %%p"
  124. )
  125. )
  126. if not "!install_packages!"=="" (
  127. echo.
  128. echo 正在安装以下包: !install_packages!
  129. :: 针对不同的包使用不同的安装源
  130. for %%p in (!install_packages!) do (
  131. if "!USE_MIRROR!"=="true" (
  132. if "%%p"=="torch" (
  133. %PIP_CMD% install torch --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu121 --no-warn-script-location
  134. ) else if "%%p"=="torchvision" (
  135. %PIP_CMD% install torchvision --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu121 --no-warn-script-location
  136. ) else if "%%p"=="torchaudio" (
  137. %PIP_CMD% install torchaudio --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu121 --no-warn-script-location
  138. ) else if "%%p"=="openai-whisper" (
  139. %PIP_CMD% install -i https://pypi.tuna.tsinghua.edu.cn/simple openai-whisper --no-warn-script-location
  140. ) else if "%%p"=="fish-speech" (
  141. %PIP_CMD% install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
  142. )
  143. ) else (
  144. if "%%p"=="torch" (
  145. %PIP_CMD% install torch --index-url https://download.pytorch.org/whl/cu121 --no-warn-script-location
  146. ) else if "%%p"=="torchvision" (
  147. %PIP_CMD% install torchvision --index-url https://download.pytorch.org/whl/cu121 --no-warn-script-location
  148. ) else if "%%p"=="torchaudio" (
  149. %PIP_CMD% install torchaudio --index-url https://download.pytorch.org/whl/cu121 --no-warn-script-location
  150. ) else if "%%p"=="openai-whisper" (
  151. %PIP_CMD% install openai-whisper --no-warn-script-location
  152. ) else if "%%p"=="fish-speech" (
  153. %PIP_CMD% install -e .
  154. )
  155. )
  156. )
  157. )
  158. echo 环境检查并安装完成
  159. endlocal
  160. pause