我在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
我也遇到了完全相同的问题。不知道我做了什么才陷入了困境,但我用一个简单的方法解决了它:
conda deactivate
conda activate foo_env
(如果您激活了多个环境,可能需要多次运行
conda deactivate
。)
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
在这里遇到同样的问题,但是通过移出 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:\>
仅当您创建环境而不指定任何其他包时才会发生这种情况。我正在使用 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
的末尾
因此,在我的情况下,我之前的实习生将 anaconda 路径附加到
/etc/profile
中的路径变量,这会覆盖 ~/.bashrc
中的 conda 设置,只需删除 /etc/profile
中的这些行即可。
我遇到了同样的问题,并通过定义Python版本解决了它
conda create --name env_name python=3.10
而不是
conda create --name env_name
在 MacOS 上,我也面临着类似的问题。我能够通过更改 VS-code 中的 python 解释器(出现在左下角)来解决该问题。
我在 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
然后它就像一个魅力!
希望有帮助!