使用非 bash shell 安装 Conda

Installing Conda using a non bash shell

出于所有 linux 和 mac mac 不明 'historical' 原因,我的工作默认使用 tcsh。我们正在尝试使用 Conda 将我们的一堆代码输出到 public。但 Conda 似乎是 bash 唯一的实现,这对世界其他地方来说不是问题。我无法将它安装在 tcsh shell 中,我在 Conda troubleshooting guide 中发现了一些对 zsh 的引用,但我无法判断 Conda 是否是 bash 唯一的实现或如果它真的可以在其他 shell 中工作。虽然我可以从 tcsh 终端 window 轻松启动 bash,但这是一个小麻烦。

所以我想知道的是:Conda 是否适用于其他 shell 类型,如果不能,为什么?

在 bash 或 zsh 之外使用 conda 的主要问题是它需要 activatedeactivate 脚本来修改本地环境,这意味着它们必须获取而不是在子 shell 中执行。 activate 中的第二个语句检查您是否来自受支持的 shell 之一 运行:

# Determine the directory containing this script
if [[ -n $BASH_VERSION ]]; then
    _SCRIPT_LOCATION=${BASH_SOURCE[0]}
elif [[ -n $ZSH_VERSION ]]; then
    _SCRIPT_LOCATION=${funcstack[1]}
else
    echo "Only bash and zsh are supported"
    return 1
fi

对此您无能为力。但是,当我在 tcsh 中手动设置 PATH 变量时,我很幸运地使用了现有的 conda 环境:如果您将根目录或自定义环境的 bin 文件夹前缀为 PATH, 你应该能够让事情顺利进行。

不过,我不确定您是否可以(从未尝试过)安装 conda 或修改 bash 之外的环境。

这是对整个讨论的一个非常晚的补充。但它可能会帮助 运行 遇到同样问题的其他人。不幸的是,我只在 tcsh shell 中尝试过这个。

conda installation guidelines 中所述,与 bash 相比,运行 conda 在其他 shell 中不再是什么大问题(即使用 bash installer.sh)。从 conda 4.4 开始。现在似乎有一个 conda activate myenv 功能。 以及 conda 4.6。有一个 conda init 脚本,它应该在必要的配置文件 (~/.bashrc, ~/. tcshrc 等)。这样就可以 运行 有多个 shells.

然而,这似乎仍然无法在 Miniconda3 和 conda 4.6 上完美运行(conda init tcsh,抛出错误,github 上有一个未解决的问题)。 但是我在 github 上找到了一个可能的解决方案。通过将 source <prefix>/minicondaX/etc/profile.d/conda.csh 添加到您的 ~/.tcshrc 文件中,您应该能够在 tcsh 中使用 conda activate myenv

最新的 Anaconda 支持几个非 bash 内核,包括对 TCSH 的原生支持。只需 运行 以下内容:

<path to minicondaORanaconda>/bin/conda init tcsh

并重新启动您的终端。完成!!

此命令将创建一个 .tcshrc 文件,其中包含以下条目


# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
if ( -f "/local/mnt/workspace/mohit/miniconda3/etc/profile.d/conda.csh" ) then
    source "/local/mnt/workspace/mohit/miniconda3/etc/profile.d/conda.csh"
else
    setenv PATH "/local/mnt/workspace/mohit/miniconda3/bin:$PATH"
endif
# <<< conda initialize <<<

其中 /local/mnt/workspace/mohit/ 是我的 miniconda 目录的位置。