我使用的是 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 线程中找到它。