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

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

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

conda create -n py3 python=3

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

python

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

which python

结果更让我惊讶,我得到了以下结果:

/Users/karlstroetmann/anaconda2/envs/py3/bin/python

当我调用命令时

/Users/karldrstroetmann/anaconda2/envs/py3/bin/python

我确实得到了 python 3.6.3。但我不明白为什么我不能通过输入来调用这个版本python。我在这里缺少什么?任何提示将非常感激。

答案1

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

type -a python

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

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

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

hash -t python

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

hash

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

alias python

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

alias

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

hash -d python

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

hash -r

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

unalias python

或者您可以立即清除所有别名:

unalias -a

答案2

我已经解决了我的问题,这是一个愚蠢的错误:我的 .bashrc 中有一个 python 的别名。我忘记了这个别名,因此出现了问题。

答案3

如果您从 anaconda(基础)环境调用虚拟环境,也可能会发生这种情况。用于conda deactivate退出全部anaconda 环境,然后conda activate <myenv>返回您的环境。

无论如何,这对我有用。在 StackExchange 线程中找到它。

相关内容