Snakemake 将 conda 激活命令更改为 'conda activate'
Snakemake change conda activation command to 'conda activate'
我想在我的托管环境中使用带有fish shell和conda环境的snakemake(基本上我没有root权限,默认的shell无法更改)。
我在 .bashrc
:
中使用这个技巧将 fish 设置为 'default' shell
if [ "$REALBASH" != "1" ]; then
case "$-" in
*i*)
export SHELL=/usr/bin/fish
tty > /dev/null && echo "Your ~/.bashrc is switching interactive SHELL to $SHELL"
[ -x $SHELL ] && exec $SHELL "$@"
echo "Apparently $SHELL is not available here. Continuing with bash."
export SHELL=/bin/bash
;;
esac
fi
还有一个命令 realbash
设置环境变量 REALBASH=1
来绕过这个 hack。
我设法让 conda 使用 与 fish 一起工作,但它的缺点是在 fish 中激活 conda 环境的命令与 bash 不同。在bash中,命令是source activate ...
,在fish中是conda activate ...
。
激活环境在 bash 使用 source activate ...
和鱼使用 conda activate ...
都有效。
当我现在从 fish 执行 snakemake 时,出现以下错误:
Activating conda environment ...
source: Error encountered while sourcing file “activate”:
source: No such file or directory
如果我从 bash 执行 snakemake,也会出现同样的错误。
如果我通过 snakemake --overwrite-shellcmd realbash
从 bash 执行 snakemake,我会得到同样的错误并最终进入由 snakemake 打开的 bash shell。只有在键入 exit 之后,snakemake 才会完成(但当然没有成功)。
如果我通过 snakemake --overwrite-shellcmd realbash
从 fish 执行 snakemake,也会发生同样的行为。
我对 --overwrite-shellcmd
的行为感到困惑,有没有办法让我的 hack 起作用?
否则,我可以将 snakemake 配置为调用 conda activate
而不是 source activate
吗?
或者还有其他解决方案吗?
显然这是旧版本 snakemake
中的错误。问题中描述的效果是用 snakemake 4.3.1
.
产生的
运行 snakemake
来自安装了 snakemake 5.17.0
的 conda
环境,与问题中描述的设置完美配合。不需要 --overwrite-shellcmd
或其他更改。
我想在我的托管环境中使用带有fish shell和conda环境的snakemake(基本上我没有root权限,默认的shell无法更改)。
我在 .bashrc
:
if [ "$REALBASH" != "1" ]; then
case "$-" in
*i*)
export SHELL=/usr/bin/fish
tty > /dev/null && echo "Your ~/.bashrc is switching interactive SHELL to $SHELL"
[ -x $SHELL ] && exec $SHELL "$@"
echo "Apparently $SHELL is not available here. Continuing with bash."
export SHELL=/bin/bash
;;
esac
fi
还有一个命令 realbash
设置环境变量 REALBASH=1
来绕过这个 hack。
我设法让 conda 使用 source activate ...
,在fish中是conda activate ...
。
激活环境在 bash 使用 source activate ...
和鱼使用 conda activate ...
都有效。
当我现在从 fish 执行 snakemake 时,出现以下错误:
Activating conda environment ...
source: Error encountered while sourcing file “activate”:
source: No such file or directory
如果我从 bash 执行 snakemake,也会出现同样的错误。
如果我通过 snakemake --overwrite-shellcmd realbash
从 bash 执行 snakemake,我会得到同样的错误并最终进入由 snakemake 打开的 bash shell。只有在键入 exit 之后,snakemake 才会完成(但当然没有成功)。
如果我通过 snakemake --overwrite-shellcmd realbash
从 fish 执行 snakemake,也会发生同样的行为。
我对 --overwrite-shellcmd
的行为感到困惑,有没有办法让我的 hack 起作用?
否则,我可以将 snakemake 配置为调用 conda activate
而不是 source activate
吗?
或者还有其他解决方案吗?
显然这是旧版本 snakemake
中的错误。问题中描述的效果是用 snakemake 4.3.1
.
运行 snakemake
来自安装了 snakemake 5.17.0
的 conda
环境,与问题中描述的设置完美配合。不需要 --overwrite-shellcmd
或其他更改。