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

问题描述 投票:0回答:8

我在Linux下有以下conda环境:

$ conda info -e
# conda environments:
#
py33                     /u21/coyotito/.anaconda/envs/py33
root                  *  /u21/coyotito/.anaconda

并且

py33
是使用以下命令创建的:

$ conda create -n py33 python=3.3 anaconda

问题是当我激活

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

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

(py33)

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

在新环境中代替Python:

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

如何解决这个问题?

更新

我的

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

export PATH=$HOME/.anaconda/bin:$PATH
python anaconda
8个回答
81
投票

我也遇到了完全相同的问题。不知道我做了什么才陷入了困境,但我用一个简单的方法解决了它:

conda deactivate
conda activate foo_env

(如果您激活了多个环境,可能需要多次运行

conda deactivate
。)


48
投票

TLDR;

# 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“导入系统;打印(sys.executable)”

或按照评论中的建议

哪条蟒蛇

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

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

停用基础环境,然后激活我想要的环境,成功了。

Conda 称之为嵌套激活,您可以在 docs 中阅读更多相关信息。

如果您想禁用嵌套激活

conda config --set auto_stack 0

如果您想禁用 Base Env 激活

conda config --set auto_activate_base false

11
投票

在这里遇到同样的问题,但是通过移出 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:\>

6
投票

仅当您创建环境而不指定任何其他包时才会发生这种情况。我正在使用 Conda 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

此外,建议将 conda deactivate 添加到

.zshenv
.bash_profile

的末尾

4
投票

因此,在我的情况下,我之前的实习生将 anaconda 路径附加到

/etc/profile
中的路径变量,这会覆盖
~/.bashrc
中的 conda 设置,只需删除
/etc/profile
中的这些行即可。


2
投票

我遇到了同样的问题,并通过定义Python版本解决了它

conda create --name env_name python=3.10

而不是

conda create --name env_name

1
投票

在 MacOS 上,我也面临着类似的问题。我能够通过更改 VS-code 中的 python 解释器(出现在左下角)来解决该问题。


0
投票

我在 macOS Ventura 13.2.1 上也遇到了类似的问题。 这是由 vscode 引起的,它首先激活基础,然后激活指定的环境。因为已经建议了

# deactivate Conda environment
# (until even base environment is deactivated)
conda deactivate
# activate your environment
conda activate your_env_name_goes_here

也有效,但没有完全解决问题,因为每次打开 vscode 终端时我都必须这样做。 真正的问题是基础环境中没有安装python,所以我切换到基础环境

# deactivate Conda environment
# (until even base environment is deactivated)
conda deactivate
# activate your environment
conda activate base

然后安装 python

conda install python=3.10 #for example

我也遇到了

permission denied
错误,因此我在重试之前确保特定文件夹具有正确的访问写入权限

sudo chmod a+rwx <path_to_miniconda> 
conda install python=3.10 #for example

注意:你可能不需要

x
中的
a+rwx
但我只用这种方式测试过

PS:我还在我的

.zshrc
(或
.bashrc
,如果你使用bash)中配置了一些别名,我必须将其删除

alias python=python3
alias pip=pip3

然后它就像一个魅力!

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.