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

nev*_*int 11 python anaconda

我在Linux下有以下conda环境:

$ conda info -e
# conda environments:
#
py33                     /u21/coyotito/.anaconda/envs/py33
root                  *  /u21/coyotito/.anaconda
Run Code Online (Sandbox Code Playgroud)

py33使用此命令创建:

$ conda create -n py33 python=3.3 anaconda
Run Code Online (Sandbox Code Playgroud)

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

[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
Run Code Online (Sandbox Code Playgroud)

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

(coyotito)[coyotito@pearl ~]$ which python
~/.anaconda/bin/python
Run Code Online (Sandbox Code Playgroud)

在新环境中代替python:

~/.anaconda/envs/py33/bin/python3.3
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

更新

我的PATH环境~/.bash_profile如下所示:

export PATH=$HOME/.anaconda/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

Raz*_*aza 19

TLDR;

# deactivate Conda environment
# (until even base environment is deactivated)
conda deactivate
# activate your environment
conda activate your_env_name_goes_here
Run Code Online (Sandbox Code Playgroud)

尝试这个

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

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

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

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

停用基础环境,然后激活我想要的环境,工作。

  • 是的,停用所有环境对我来说很有效。 (4认同)
  • 另一种方法(在 Unix 上)检查您正在使用哪个 python:`which python`。对于点问题也很有用。 (3认同)
  • 这确实有帮助。我首先停用了当前的环境,然后停用了基础环境,然后重新激活了我的环境。工作了。 (2认同)
  • 这对我有用,我没有注意到我是从基础环境激活的,直到遇到这个答案。现在一切都好了。 (2认同)

小智 6

在这里登陆同样的问题,但是通过移出anaconda可执行文件目录,调用了正确的python.我在一个目录中,其中包含与Anaconda2一起安装的python可执行文件.

例:

(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:\>
Run Code Online (Sandbox Code Playgroud)


小智 6

仅当您创建环境而不指定任何其他包时才会发生这种情况。我正在使用康达4.10.3

请参阅https://github.com/conda/conda/issues/9392#issuecomment-696897058

上面链接中的以下评论适用于我的案例:

我注意到,如果我在创建环境时安装一个数据包,它就会起作用。

antony@antony-fedora : ~/Workspace/tmp : which python /usr/bin/python
antony@antony-fedora : ~/Workspace/tmp : conda create --name my_env 
antony@antony-fedora : ~/Workspace/tmp : conda activate my_env 
(my_env) antony@antony-fedora : ~/Workspace/tmp : which python
/usr/bin/python 
(my_env) antony@antony-fedora : ~/Workspace/tmp : conda create --name my_env pip  
(my_env) antony@antony-fedora : ~/Workspace/tmp : conda activate my_env 
(my_env) antony@antony-fedora : ~/Workspace/tmp : which python ~/anaconda3/envs/my_env/bin/python
Run Code Online (Sandbox Code Playgroud)

另外,建议将 conda deactivate 添加到您的.zshenv.bash_profile


Tah*_*lor 5

我有同样的问题。不知道我是怎么做的,但是我用一个简单的方法解决了:

conda deactivate
conda activate foo_env
Run Code Online (Sandbox Code Playgroud)

  • 只需确保您也退出默认的“基本”环境即可。 (13认同)
  • 我可以确认,但您知道为什么我们需要停用吗? (2认同)
  • 就我而言,问题是在安装新软件包后发生的。`conda` “忘记”它使用的是不同的 python 版本。 (2认同)

小智 5

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