python命令启动了错误版本的python解释器

Car*_*suf 4 python python3

我使用的是 Mac OS X 版本 10.13.1,我刚刚安装了 anaconda。我已经使用命令创建了一个虚拟环境

conda create -n py3 python=3
Run Code Online (Sandbox Code Playgroud)

然后,我使用命令启动了 python 解释器

python
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,来自 /usr/bin 的预装 python 2.7 出现了,而不是 python 3.6。为了检查出了什么问题,我发出了命令

which python
Run Code Online (Sandbox Code Playgroud)

结果更令人惊讶,我得到了以下信息:

/Users/karlstroetmann/anaconda2/envs/py3/bin/python
Run Code Online (Sandbox Code Playgroud)

当我然后调用命令时

/Users/karldrstroetmann/anaconda2/envs/py3/bin/python
Run Code Online (Sandbox Code Playgroud)

我确实得到了 python 3.6.3。但我不明白为什么我不能通过键入python. 我在这里缺少什么?任何提示将不胜感激。

iga*_*gal 8

python命令很可能已被散列,您需要清除缓存。为了查看实际运行的可执行文件,您可以使用以下type命令,例如:

type -a python
Run Code Online (Sandbox Code Playgroud)

which命令不同的是,该type命令可以识别散列程序,以及别名和 shell 函数。

有关使用哪些(无双关语)命令来确定 shell 执行哪些程序的进一步讨论,请参阅以下帖子:

或者,您也可以使用hash命令本身来确定给定的命令是否已被散列,例如:

hash -t python
Run Code Online (Sandbox Code Playgroud)

您还可以通过hash不带任何参数运行来列出所有散列命令,即:

hash
Run Code Online (Sandbox Code Playgroud)

同样,您可以使用该alias命令来检查给定的命令是否是别名,例如:

alias python
Run Code Online (Sandbox Code Playgroud)

您还可以列出所有活动别名:

alias
Run Code Online (Sandbox Code Playgroud)

要清除缓存的 Python 程序,您可以使用以下命令:

hash -d python
Run Code Online (Sandbox Code Playgroud)

或者,您可以一次清除所有内容:

hash -r
Run Code Online (Sandbox Code Playgroud)

要清除单个别名,您可以使用该unalias命令,例如:

unalias python
Run Code Online (Sandbox Code Playgroud)

或者您可以一次清除所有别名:

unalias -a
Run Code Online (Sandbox Code Playgroud)