我想一次性导出所有 conda 库。
所以这个问题在这篇文章中得到了部分回答: 导出所有创建的conda环境
for env in $(conda env list | cut -d" " -f1); do
if [[ ${env:0:1} == "#" ]] ; then continue; fi;
conda env export -n $env > ${env}.yml
done
但是由于我经验不足,或者可能很愚蠢,所以我的问题是: ** 在 win10 机器上哪里以及如何运行这段代码?**
我需要将其放入脚本中吗? 或者这个解决方案根本无法在 Windows 上运行?
找到解决方案:
对脚本进行了如下改进:
@echo off
for /f "tokens=*" %%a in ('conda env list ^| findstr /r /c:"^[^#]" ^| findstr /v /r /c:"^base" ^| %__APPDIR__%more.com +1') do (
echo %%a
call :export_env "%%a"
)
pause
goto :eof
:export_env
setlocal
set input_string=%~1
for /f "tokens=1,2 delims= " %%a in ("%input_string%") do (
set env_name=%%a
set path1=%%b
)
conda env export -n %env_name% > %env_name%.yml
echo %env_name%.yml
endlocal
修改了 Ritchie 的精彩答案,因此脚本还将导出使用路径(-p)而不是名称(-n)创建的环境。该脚本使用父目录的名称作为保存名称(通常环境位于存储库的子文件夹中)。
@echo off
for /f "tokens=1" %%a in ('conda env list ^| findstr /r /c:"^[^#]" ^| findstr /r /c:"\..*$" ^| findstr /v /r /c:"^base" ^| %__APPDIR__%more.com +1') do (
call :export_env "%%a"
)
for /f "tokens=1" %%a in ('conda env list ^| findstr /r /c:"^[^#]" ^| findstr /v /r /c:"\..*$" ^| findstr /v /r /c:"^base" ^| %__APPDIR__%more.com +1') do (
echo "conda env export -n %%a > %%a.yml"
call conda env export -n %%a > %%a.yml
)
pause
goto :eof
:export_env
setlocal
set s=%~1
for %%b in (%s%.) do set parent=%%~dpb
FOR %%a IN ("%parent:~0,-1%") DO SET env_name=%%~nxa
@REM echo "name=%env_name% path=%s%"
echo "conda env export -p %s% > %env_name%.yml"
call conda env export -p %s% > %env_name%.yml
endlocal