使用非 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
的主要问题是它需要 activate
和 deactivate
脚本来修改本地环境,这意味着它们必须获取而不是在子 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 目录的位置。
出于所有 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
的主要问题是它需要 activate
和 deactivate
脚本来修改本地环境,这意味着它们必须获取而不是在子 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 目录的位置。