关于anaconda:为什么Conda激活环境后无法调用正确的Python版本?

Why Conda cannot call correct Python version after activating the environment?

我在Linux下具有以下conda环境:

1
2
3
4
5
$ conda info -e
# conda environments:
#
py33                     /u21/coyotito/.anaconda/envs/py33
root                  *  /u21/coyotito/.anaconda

然后使用以下命令创建py33

1
$ conda create -n py33 python=3.3 anaconda

问题是当我激活py33时,它仍然无法调用Python版本3.3。

1
2
3
4
5
6
7
8
[coyotito@pearl ~]$ source activate py33
(coyotito)[coyotito@pearl ~]$ python --version
Python 2.7.10 :: Anaconda 2.1.0 (64-bit)
(coyotito)[coyotito@pearl ~]$ conda info -e
# conda environments:
#
py33                     /u21/coyotito/.anaconda/envs/py33
root                  *  /u21/coyotito/.anaconda

即它仍在调用旧的python。另请注意,括号下的提示不是(py33)

1
2
(coyotito)[coyotito@pearl ~]$ which python
~/.anaconda/bin/python

在新环境中代替python:

1
~/.anaconda/envs/py33/bin/python3.3

如何解决此问题?

更新

我在~/.bash_profile中的PATH环境如下:

1
export PATH=$HOME/.anaconda/bin:$PATH


我遇到了完全相同的问题。不知道我是如何陷入困境的,但是我用一个简单的方法解决了这个问题:

1
2
conda deactivate
conda activate foo_env


TLDR;

1
2
3
4
5
# deactivate Conda environment
# (until even base environment is deactivated)
conda deactivate
# activate your environment
conda activate your_env_name_goes_here

试试这个

激活环境A,然后使用以下命令检查Python包的位置。

python -c"import sys; print(sys.executable)"

激活另一个环境,假设环境B并重新运行上面的python命令。如果conda未使用正确的Python版本,则很可能在两个环境中运行上述命令都将打印相同的路径。

我的conda安装未使用正确的版本,因为我已在conda基本环境之上激活了我的环境。

先停用基本环境,然后再激活我想要的环境。


在这里也有同样的问题,但是通过移出anaconda可执行目录,可以调用正确的python。我在一个目录中,该目录包含与Anaconda2一起安装的python可执行文件。

示例:

1
2
3
4
5
6
7
8
9
(py35) C:\\Anaconda>python --version
Python 2.7.11 :: Anaconda 4.0.0 (64-bit)

(py35) C:\\Anaconda>cd ..

(py35) C:\\>python --version
Python 3.5.2 :: Anaconda 4.2.0 (64-bit)

(py35) C:\\>

所以在我的情况下,在我之前的实习生将anaconda路径附加到/etc/profile中的路径变量,这会覆盖我在~/.bashrc中的conda设置,只需删除/etc/profile中的那些行就可以帮助。