【问题标题】:conda export env from bash scriptconda 从 bash 脚本导出环境
【发布时间】:2021-07-11 21:35:37
【问题描述】:

我想出了以下 bash 脚本来将我的 conda-env 导出到文件中。

run.sh

#!/usr/bin/bash
while [[ $# -gt 0 ]]; do
option=$1
case "$option" in
    -e|--export)
        conda env export -n myenv | grep -v "^prefix: " > ../setup/env.yaml
        shift
        ;;
        esac
done

conda env export -n myenv | grep -v "^prefix: " > ../setup/env.yaml 行在命令行中执行时按预期工作。但是在执行./run.sh -e 时,env.yaml 看起来像,

name: myenv
channels:
  - defaults

寻求帮助以解决此问题。谢谢。

编辑:已经尝试了链接 (https://stephencowchau.medium.com/simple-bash-script-to-export-all-conda-virtual-environments-2e337cd9480) 中的字符串和 eval 方法,这也产生了与我的脚本相同的结果。

Edit2:这似乎适用于 Linux 机器。但不能在 Windows 中的 WSL 中工作。

【问题讨论】:

  • 不确定,但尝试在登录模式下运行 bash,即将 shebang 更改为 #!/usr/bin/bash -l
  • @merv,登录模式不走运
  • 我仍然认为这是一个用户问题 - 即,conda 在不同的用户下执行,因此envs_dirs 没有像你有 shell 会话时那样定义。 conda env export 命令总是会输出一些东西,即使名为 env 的 -n 不存在。通过-p(路径/前缀)识别环境可能更可靠,或者做一些事情来确保conda config --show envs_dirs在CLI和脚本中给出相同的结果,例如,手动设置CONDA_ENVS_DIRS。跨度>

标签: python linux bash virtualenv miniconda


【解决方案1】:

在脚本开头添加以下行修复了问题

CONDA_PATH=$(conda info | grep -i 'base environment' | awk '{print $4}')
source $CONDA_PATH/etc/profile.d/conda.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2022-10-14
    • 2012-10-26
    • 1970-01-01
    • 2015-07-24
    相关资源
    最近更新 更多