Conda activate/deactivate 环境中断 PATH

Conda activate/deactivate environment breaking PATH

我发现当我创建 Conda 环境 source activate environment 然后停用该环境 source deactivate environment 时,我的本机 bash 命令不再有效。

我附上了 ls 在启用环境之前正常工作的图像,之后就没有了。我认为这是因为我的 PATH - 但我是新手,不确定具体要修复什么。我在 Git Bash Windows 中这样做。蟒蛇 3 和 Python 3.5.

Please work ls, come on

很可能您的 conda 环境正在替换本地 bash 配置文件中定义的参数和环境变量。我敢肯定,如果您打开一个新环境(bash 会话),您会发现一切正常。

我建议您添加一条命令以在停用环境后重新加载 bash 配置文件,以便再次应用配置文件变量值。应该可以解决问题。

我在Windows10中使用GitBash也遇到了同样的问题。之前的答案对我不起作用,可能是因为我没有在 ~/.bash_profile 和 ~/.bashrc 中设置任何路径。

我检查了我的路径变量 git bash,它看起来像:

/c/Users/chen_x/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/chen_x/bin....(more)

经过. C:/Users/chen_x/Miniconda3/Scripts/activate C:/Users/chen_x/Miniconda3. activate snowflakes后,路径变为:

/C/Users/chen_x/Miniconda3/envs/snowflakes:(blalbla..):C:\Users\chen_x\Miniconda3\Library\bin;C:\Users\chen_x\Miniconda3;....(more)

我假设 git bash 无法识别像 C:\program files... 这样的路径,然后在最后一个 EXPORT PATH= 命令之后立即将以下行添加到 C:/Users/chen_x/Miniconda3/Scripts/activate (关于第 78 行):

export PATH="$($_CONDA_PYTHON -c "import re; p=re.sub(r'\\', r'/', r'$PATH'); p=re.sub('(;|:)([A-Z]):', lambda m: ':/'+m.group(2).lower(), p); print(p)")"

有效。

顺便说一句,我创建了一个 ~/condaenv 脚本来启动 conda 环境:

#!/bin/bash
. C:/Users/chen_x/Miniconda3/Scripts/activate C:/Users/chen_x/Miniconda3

这会很方便:

. ~/condaenv
. activate snowflakes

activate/deactivate 脚本中存在一些错误,我已在称为 activate.cygwin 和 deactivate.cygwin.

的版本中修复了这些错误
  • activate.cygwin:修复了 conda 命令 returns 字符串末尾带有 return "\r" 的 2 个地方,这会混淆处理。

  • deactivate.cygwin: 修复 /cygdrive/... 的转换以避免错误 CondaValueError:找不到环境:/cygdrivec:\Users\rjp\Anaconda2\envs...

我已将修改后的脚本发布到 https://bitbucket.org/snippets/plevin/。请参阅 activate.cygwin.

顶部的说明

停用 conda 环境的正确方法是 运行 conda deactivate,而不是 source deactivate environment

来源:https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html?highlight=activate#deactivating-an-environment