Conda 使用 /usr/local/bin/python 而不是 conda 环境 python

问题描述 投票:0回答: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

python path anaconda environment-variables conda
3个回答
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


2
投票

问题是在

/usr/local/bin
路径之前的
$PATH
中有
anaconda3
。这可能来自您的
~/.zshrc
/
~/.bashrc
/
~/.profile
文件,但
$PATH
正在被修改,以便 Anaconda
bin
文件夹位于
/usr/local/bin
之后。


0
投票

同样的问题并已解决。

  1. 转到您的 usr 目录并找到“/home/usr/.bash_profile”。我的显示:

    用户特定环境和启动程序

    PATH=$PATH:$HOME/.local/bin:$HOME/bin

    导出路径

  2. 插入以下行并将“/home/usr/.bash_profile”文件另存为:

    用户特定环境和启动程序

    PATH=“/home/shanzhang/anaconda3/bin:$PATH”

    PATH=$PATH:$HOME/.local/bin:$HOME/bin

    导出路径

  3. 问题已解决。

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