【问题标题】:bash script to deactivate conda environment用于停用 conda 环境的 bash 脚本
【发布时间】:2019-06-10 22:11:40
【问题描述】:

根据用户的建议,我正在修改问题,以更狭隘地关注“为什么我不能从 shell 脚本运行 conda 命令”这个问题。

我的默认 conda 环境名为“py37”。 Shell 启动,我可以停用:

(py37) pauljohn@delllap-16:Desktop$ conda deactivate
pauljohn@delllap-16:Desktop$

我想创建一个短名称的 shell 脚本来做同样的工作。我尝试了几种变体,例如,一个名为“noconda.sh”的文件:

$ cat noconda.sh
#!/bin/bash

eval "conda deactivate"   

这显然是失败的:

 pauljohn@delllap-16:bin$ noconda.sh

CommandNotFoundError: Your shell has not been properly configured to use 'conda deactivate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

我发现如果 conda 功能处于活动状态,我使用的许多其他项目都无法正常工作。

你可能会问我的.bashrc里有什么:

# added by Anaconda3 2018.12 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/home/pauljohn/LinuxDownloads/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/home/pauljohn/LinuxDownloads/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/pauljohn/LinuxDownloads/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base 
    else
        \export PATH="/home/pauljohn/LinuxDownloads/anaconda3/bin/:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<

# help with conda bug accessing gsettings:
# https://github.com/conda-forge/glib-feedstock/issues/19
export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules/

conda deactivate
conda activate py37

【问题讨论】:

  • 你试过source deactivate
  • 你可以先conda deactivate 然后conda activate py37 在你的.bashrc。那么摆脱 conda 的只是一个conda deactivate,而不是 2 个。
  • @darthbith。这有点帮助。 1 deactivates 比 2 好。但我仍然想制作一个 shell 脚本来更轻松地完成这项工作。
  • @shn "source ..." 在较新的 Anaconda 中被替换为 "conda ..."。据我所知,使用 source 具有相同的效果 (docs.conda.io/projects/conda/en/latest/user-guide/tasks/…)。

标签: conda virtual-environment


【解决方案1】:

有人应该给我一个 +1 来发布这个优秀的问题 :)

这是一个修复。

在 ~/.bashrc 的末尾,插入:

alias noconda='conda deactivate'

之后,来自 shell "noconda" 的命令就完成了。

希望我能找到 shell 脚本来完成相同的工作,这样可以更方便地跨帐户。

【讨论】:

    【解决方案2】:

    根据这个answer,如果您使用bash -i noconda.sh 启动sh 文件,conda deactivate 工作正常。检查原答案的原因。

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多