【发布时间】: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