无法在Fish-shell中使用conda运行source activate

37

我遵循conda_PR_545conda issues 4221,但在Ubuntu上仍然无法正常工作。

这里下载conda.fish,并将其移动到anaconda3/bin/中。

在~/.config/fish/config.fish末尾添加"source /home/phejimlin/anaconda3/bin/conda.fish"。

conda activate spark_env
Traceback (most recent call last):
File "/home/phejimlin/anaconda3/bin/conda", line 6, in 
sys.exit(conda.cli.main())
File "/home/phejimlin/anaconda3/lib/python3.6/site-packages/conda/cli/main.py", line 161, in main
raise CommandNotFoundError(argv1, message)
TypeError: init() takes 2 positional arguments but 3 were given
或者
activate spark_env
Error: activate must be sourced. Run 'source activate envname'
instead of 'activate envname'.

我错过了什么吗?

3个回答

64

截至fish 2.6.0和conda 4.3.27版本:以下步骤可能会因问题的解决而改变

更新配置

记下你的conda位置

conda info --root
/Users/mstreeter/anaconda    # this is my <PATH_TO_ROOT>
~/.config/fish/config.fish中添加行。
 source <PATH_TO_ROOT>/etc/fish/conf.d/conda.fish

更新规则

通常,您会从 bash 中运行以下命令:

source activate <environment>
source deactivate <environment>

现在你必须从 fish 中运行以下命令

conda activate <environment>
conda deactivate <environment>

问题

这样做后,我无法将fish设置为我的默认shell,并且仍然能够与conda正常工作。目前,我必须先进入我的默认shell,然后输入fish,shell才能按预期工作。如果我找到了在每次登录终端时无需显式选择fish的完全工作方法,我会更新这个问题。


3
我刚刚尝试了一下,将fish设置为我的默认shell没有任何问题。创建一个新的shell会话后,我的默认conda环境被正确激活并显示出来。 - K.-Michael Aye
这对我有用,但不完全:在我激活conda环境后,它仍然指向我的系统Python而不是conda环境的Python。有什么想法如何解决这个问题吗? - jjs
1
更新:已在https://dev59.com/aLPma4cB1Zd3GeqPkAlZ中回答。 - jjs
太好了!只需要更新配置即可。 - Adam Erickson

33

如果您遵循https://github.com/conda/conda/issues/2611,步骤如下(从开始):

[root@6903a8d80f9b ~]# fish
root@6903a8d80f9b ~# echo $FISH_VERSION 
2.4.0
root@6903a8d80f9b ~# bash Miniconda2-4.3.11-Linux-x86_64.sh -b -p /conda
root@6903a8d80f9b ~# source /conda/etc/fish/conf.d/conda.fish
root@6903a8d80f9b ~# conda activate root
root@6903a8d80f9b ~# conda create -yn fishtest                              (root) 
Fetching package metadata .........
Solving package specifications: 
Package plan for installation in environment /conda/envs/fishtest:

#
# To activate this environment, use:
# > source activate fishtest
#
# To deactivate this environment, use:
# > source deactivate fishtest
#

root@6903a8d80f9b ~# conda activate fishtest                                (root) 
root@6903a8d80f9b ~#                                                    (fishtest) 
root@6903a8d80f9b ~# conda deactivate fishtest                          (fishtest) 

2
哇!太神奇了,它正在工作!我只是在我的config.fish中添加了“source(conda info --root)/etc/fish/conf.d/conda.fish”,它就能够运行了!非常感谢,我几乎花了一整天的时间来设置环境。 - Jim
我的答案基本上和你的答案一样,Nehal。不过在你的答案中,细节似乎被埋没了,所以我按照我的水平写了我的答案。 - Marc
我唯一的问题是,你为什么要以root身份工作。 ;) - K.-Michael Aye
对于SO的答案,我只需生成一个新容器,通常我是其中的root :) - Nehal J Wani

11

4
自Conda v4.6.0以来,你只需要运行conda init即可,它将为你调整config.fish - merv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接