如何导出所有 conda 环境?

问题描述 投票:0回答:2

我想一次性导出所有 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 机器上哪里以及如何运行这段代码?**

在conda中运行不起作用,cmd提示符也失败 screenshot

我需要将其放入脚本中吗? 或者这个解决方案根本无法在 Windows 上运行?

windows bash batch-file conda backup
2个回答
1
投票

找到解决方案:

  1. 将脚本放入记事本文件中
  2. 将扩展名重命名为.bat
  3. 从 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

0
投票

修改了 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
© www.soinside.com 2019 - 2024. All rights reserved.