gpt4 book ai didi

python - 为什么 deactivate 不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:12 24 4
gpt4 key购买 nike

我已经在 Ubuntu Server 18 上安装了最新的 anaconda 版本:4.7.12

为什么在终端中,conda deactivate/root/newinstall/anaconda3/bin/conda deactivate 没有?

这是 which conda 的输出:

(base) root@jenkinstest:~# which conda
/root/newinstall/anaconda3/bin/conda

当我运行 /root/newinstall/anaconda3/bin/conda deactivate 时,我预计 conda deactivate 命令会出现相同的行为,因此会停用当前的 conda 环境。

但是如果我运行 /root/newinstall/anaconda3/bin/conda deactivate,我会收到以下错误:

(py36) root@jenkinstest:~# /root/newinstall/anaconda3/bin/conda deactivate

CommandNotFoundError: Your shell has not been properly configured to use 'conda deactivate'.
To initialize your shell, run

$ conda init <SHELL_NAME>

Currently supported shells are:
- bash
- fish
- tcsh
- xonsh
- zsh
- powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

请注意,我已经按照建议使用了 conda init shell,并且我还重新启动了 shell session 。但仍然出现同样的错误。

最佳答案

当使用 bash(或 ash、zsh 或 dash)作为 shell 时,conda实际上是一个函数,而不是一个命令,并且which不会向您显示其定义。

conda cli(命令行界面)仅用于支持设置 shell 集成,这就是您看到 conda init 的原因错误信息。

如果不是 which conda你跑type conda ,你会看到它的定义。或者查看 etc/profile.d/conda.sh definition on GitHub . conda deactivate运行 __conda_activate deactivate等。其他 shell 集成的工作方式相同。

Conda 使用特定于 shell 的集成,因此如果您不在 bash 上,则应应用其中之一:

在引擎盖下然后这会使用您的 conda cli,但添加了当前的 shell 信息。这些命令被隐藏是有原因的;它们依靠 shell 集成来确保发出和评估正确的 shell 命令在您当前的 shell 中。您不能从新进程执行此操作,因为子进程无法更改您的 shell 环境并设置类似 PATH 的内容。或添加或删除其他 shell 变量。

所以 conda deactivate在 bash 中改为使用 bash 函数调用,然后当该函数调用执行时 /root/newinstall/anaconda3/bin/conda shell.posix deactivate它作为 eval instruction 的一部分这样做. .../conda shell.posix deactivate命令输出一系列 bash 命令,其中 eval然后在您当前的 shell 中执行,因此停用 conda 环境配置。

因此,如果您真的、真的想使用该命令行工具,您必须自己评估它的输出:

eval `/root/newinstall/anaconda3/bin/conda shell.posix deactivate`

以上内容当然特定于 bash(兼容)shell! ` /root/newinstall/anaconda3/bin/conda shell.posix deactivate 周围的反引号告诉 bash 将命令的输出作为字符串提供给 eval .如果你在没有 eval `...` 的情况下运行它部分,您将看到它发出的命令:

(base) root@jenkinstest:~# /root/newinstall/anaconda3/bin/conda shell.posix deactivate
export PATH='/root/newinstall/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'
unset CONDA_PREFIX
unset CONDA_DEFAULT_ENV
unset CONDA_PROMPT_MODIFIER
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
export CONDA_SHLVL='0'
export CONDA_EXE='/root/newinstall/anaconda3/bin/conda'
export _CE_M=''
export _CE_CONDA=''
export CONDA_PYTHON_EXE='/root/newinstall/anaconda3/bin/python'

(请注意,这只会在 事件的 conda 环境 中产生输出)。

关于python - 为什么 <path to conda> deactivate 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59030994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com