Conda在使用时,使用的是位于/usr/local/bin/python路径下的Python而不是Conda环境中的Python。

3

我激活conda环境后运行which python命令,返回结果如下:

/usr/local/bin/python

您可以看到,它没有使用应该在conda环境中的python,即/Users/zeus/opt/anaconda3/envs/po/bin/python

我该如何解决这个问题? 我正在使用MacOS

这是我的conda info -a

# conda environments:
#
base                     /Users/zeus/opt/anaconda3
discoe                   /Users/zeus/opt/anaconda3/envs/discoe
po                    *  /Users/zeus/opt/anaconda3/envs/po
py38                     /Users/zeus/opt/anaconda3/envs/py38
test                     /Users/zeus/opt/anaconda3/envs/test

sys.version: 3.9.7 (default, Sep 16 2021, 08:50:36)
...
sys.prefix: /Users/zeus/opt/anaconda3
sys.executable: /Users/zeus/opt/anaconda3/bin/python
conda location: /Users/zeus/opt/anaconda3/lib/python3.9/site-packages/conda
conda-build: /Users/zeus/opt/anaconda3/bin/conda-build
conda-content-trust: /Users/zeus/opt/anaconda3/bin/conda-content-trust
conda-convert: /Users/zeus/opt/anaconda3/bin/conda-convert
conda-debug: /Users/zeus/opt/anaconda3/bin/conda-debug
conda-develop: /Users/zeus/opt/anaconda3/bin/conda-develop
conda-env: /Users/zeus/opt/anaconda3/bin/conda-env
conda-index: /Users/zeus/opt/anaconda3/bin/conda-index
conda-inspect: /Users/zeus/opt/anaconda3/bin/conda-inspect
conda-metapackage: /Users/zeus/opt/anaconda3/bin/conda-metapackage
conda-pack: /Users/zeus/opt/anaconda3/bin/conda-pack
conda-render: /Users/zeus/opt/anaconda3/bin/conda-render
conda-repo: /Users/zeus/opt/anaconda3/bin/conda-repo
conda-server: /Users/zeus/opt/anaconda3/bin/conda-server
conda-skeleton: /Users/zeus/opt/anaconda3/bin/conda-skeleton
conda-token: /Users/zeus/opt/anaconda3/bin/conda-token
conda-verify: /Users/zeus/opt/anaconda3/bin/conda-verify
user site dirs:

CIO_TEST: <not set>
CONDA_DEFAULT_ENV: po
CONDA_EXE: /Users/zeus/opt/anaconda3/bin/conda
CONDA_PREFIX: /Users/zeus/opt/anaconda3/envs/po
CONDA_PREFIX_1: /Users/zeus/opt/anaconda3
CONDA_PROMPT_MODIFIER: (po)
CONDA_PYTHON_EXE: /Users/zeus/opt/anaconda3/bin/python
CONDA_ROOT: /Users/zeus/opt/anaconda3
CONDA_SHLVL: 2
CURL_CA_BUNDLE: <not set>
DISCOE_PATH: /Users/zeus/Project/discoe
PATH: /Users/zeus/opt/anaconda3/bin:/Users/zeus/.poetry/bin:/Users/zeus/.nvm/versions/node/v16.13.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/zeus/opt/anaconda3/envs/po/bin:.:/Users/zeus/.local/bin:/Users/zeus/.local/bin
REQUESTS_CA_BUNDLE: <not set>
SSL_CERT_FILE: <not set>

这是我的 $PATH 环境变量内容:/Users/zeus/.poetry/bin:/Users/zeus/.nvm/versions/node/v16.13.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/zeus/opt/anaconda3/envs/po/bin:.:/Users/zeus/.local/bin:/Users/zeus/.local/bin

我通过这个命令激活我的 conda 环境:conda activate po

2个回答

3
为了解决这个问题,你需要完全停用所有的Conda环境。这不仅包括你特定的项目环境,还包括基础(默认)环境。
以下是步骤:
1. 如果你正在使用特定的Conda环境,请使用命令“conda deactivate”来停用它。 2. 你可能会注意到你仍然处于基础Conda环境中。要从基础环境中停用,请再次使用相同的命令:“conda deactivate”。
现在,你应该完全退出所有的Conda环境。
这样做的原因是,Conda和其他Python环境管理器会操作系统路径。当你激活一个Conda环境时,它会将活动环境的二进制目录的路径添加到你的系统“PATH”中。因此,当你处于Conda环境中时,安装在该环境中的Python可执行文件和脚本优先于系统范围内安装的文件。这就是为什么需要停用所有的Conda环境,以确保你使用的是系统范围内的Python。
更多详细信息,请参阅此文章:https://towardsdatascience.com/python-the-system-path-and-how-conda-and-pyenv-manipulate-it-234f8e8bbc3e

这不是一个完整的答案。我需要点击链接并阅读所有细节,才能找到如何完成它的方法。答案应该包含完整的解决方案。 - gench
解决方案是完全停用所有的conda环境,这是我在答案中提到的。这篇文章只是我参考过的一个资料。我不想复制粘贴整篇文章并在这里发布。 - Roshin Jay

2
问题在于您的$PATH中,/usr/local/bin排在anaconda3路径之前。这可能来自于您的~/.zshrc/~/.bashrc/~/.profile文件中的某个地方,但是某处修改了$PATH,使得Anaconda bin文件夹在/usr/local/bin之后。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接