尽管安装了Anaconda,Mac仍使用默认的Python

56

我正在运行Mac 10.9 Mavericks并安装了Anaconda。然而,尽管如此,当我通过终端访问python时,仍然会得到默认的Apple版本:

Python 2.7.5 (default, Sep  2 2013, 05:24:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin

我的 .bash_profile 文件内容如下:

export PATH="$HOME/anaconda/bin:$PATH"

MONGO_PATH=/usr/local/mongodb/bin
SQL_PATH=/usr/local/mysql

export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$PATH"

有什么办法可以使用Anaconda版本的Python吗?目前很困惑。

谢谢


1
路径是从左到右搜索的,因此第二个路径设置没有用,请只使用第一个。 - mmmmmm
2
注意:自Mac OS 10.15 Catalina以来,Apple将默认shell从bash更改为zsm。对于使用更新操作系统的读者,请在.zprofile(或.zshrc)中进行这些更改,而不是.bash-profile - fpersyn
9个回答

64

第一个匹配的可执行文件是要运行的文件。从我所了解的情况来看,您正在以这样的方式连接您的PATH变量:

第一个匹配的可执行文件是要运行的文件。从我所了解的情况来看,您正在以这样的方式连接您的PATH变量:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

在之前:

$HOME/anaconda/bin

所以确保Anaconda目录是第一个,这意味着它将具有优先权

export PATH="$HOME/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$PATH"

2
谢谢!运行得像魅力一样。我太愚蠢了,没有想到它。 - intl
@Heap优雅的解决方案。如果我们想“撤消”并恢复使用默认安装,应该采取什么方法? - Pyderman
@Pyderman 只需删除添加的 "export PATH" 行即可。 - Heap
3
在我的Mac电脑上,Anaconda并不在$HOME/anaconda目录下,而是在//anaconda目录下。 - arun
如果提供的其他解决方案没有将Anaconda二进制文件添加到路径中,那么通常情况就是另一种情况。 - SeedyROM
显示剩余2条评论

12
如果您的默认shell是sh(或可能是除bash之外的任何东西),您将无法访问Anaconda python。如果是这种情况:
  1. 进入终端/首选项
  2. 找到“使用以下shell打开:”
  3. 点击“命令(完整路径)”的按钮
  4. 在路径中键入/bin/bash
重新启动终端。当您键入$ which python时,您现在应该看到anaconda python。对于我来说,它是/Users/myname/anaconda3/bin/python$ echo $PATH现在也会更改以显示正确的路径,其中anaconda排在第一位: /Users/myname/anaconda3/bin:/Users/myname/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin 在Atom中,我必须在每个脚本的开头添加一个shebang来设置这个偏好: #!/Users/myname/anaconda3/bin/python

1
这对我有用!很奇怪的是,在达到Anaconda Python版本时存在终端类型依赖关系。为什么会这样? - Enis Arik
我在这里的第3/4步意外编辑了路径,但无法确定路径是什么。也就是说,我更改了终端设置中显示的路径。然后,我无法运行我的Python脚本,因为终端默认返回到MacOS默认设置,其中没有任何我的软件包,并且仍在2.7版本上。这对我有用!谢谢。 - grantog
太棒了!我到处都找不到那个。 - Moran Reznik

4
如果您正在使用zsh,您可以编辑位于根文件夹中的zshrc文件以包含以下内容:
export PATH="$HOME/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$PATH"

3

如果您正在使用fish,您可以发现Anaconda备份了旧的.bash_profile文件为.bash_profile-anaconda.bak,并在.bash_profile底部添加了2行代码,如下所示:

# added by Anaconda2 4.1.1 installer
export PATH="/Users/username/anaconda/bin:$PATH"

然而,Fish不会自动读取它,因此您需要在Fish配置文件中手动添加它,在~/.config/fish/config.fish中:
set -x PATH /Users/username/anaconda/bin $PATH

3

更新:针对所有使用Python 3的人,以上解决方案将无法使用。

Anaconda的Python 3现在位于~/anaconda3/bin。所以,改为执行以下操作:

export PATH="$HOME/anaconda3/bin:$PATH"

或者
export PATH="$HOME/anaconda3/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$PATH"

不错,@Chris的答案对我在Python 3中起作用了。 - Enis Arik

2

请确保您使用的是完整路径:

不要使用“~”代替根目录:

(错误的示例)

Original Answer翻译成:"最初的回答"

export PATH="~/anaconda/bin:$PATH"

(正确)

export PATH="$HOME/anaconda/bin:$PATH"

This change worked for me!


1
如果您使用LiClipse或Eclipse作为您的IDE,那么通过“首选项”菜单进行管理将更加容易。但我理解命令行的乐趣。
在LiClipse中将Anaconda或Anaconda的Python版本设置为默认解释器以及从Anaconda调用site-packages非常容易。我今天刚刚设置好了。
问候,
JF

1

我使用的是OSX 10.15,在经过一小时的苦苦搜索后,Andrei的回答对我很有帮助。

以下是需要保存上述步骤的文本块:

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

.zshrc 对我来说是空的,但添加仍然有效。


1

对于较新版本的mac OS,anaconda现在安装在~/opt/anaconda下。如果您使用我的zsh,请按照以下步骤操作:

  1. vim .bash_profile => 在这里,您应该在底部看到这些注释
    added by Anaconda3 2019.10 installer
  1. 将这些注释中间的内容添加到您的.zshrc文件底部,并重新启动终端。

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