在输入/离开目录时激活/停用conda virtualenvs

时间:2019-11-12 18:33:17

标签: bash anaconda conda

pyenv-virtualenv提供了一种在进入或离开包含.python-version文本文件的目录的瞬间激活环境的好方法,该文本文件指定了要激活的环境。它适用于其中的目录以及其中包含的所有目录。

将目录更改为目录上方的内容后,环境将被停用。这样可以使用不同的python版本(仅通过更改目录)轻松地在项目或分析之间切换。

有没有一种方法可以通过(ana)conda实现相同的行为?

编辑:添加了bash标记,因为-据我了解-pyenv通过将自定义脚本挂接到.bashrc中来实现此目的(允许它监视目录更改)。如果conda中没有内置方法,如何创建一个脚本使之成为可能?

1 个答案:

答案 0 :(得分:0)

如我的评论中所述,当前不支持此功能。但是,conda's GitHub上存在一个要求提供此功能的公开问题。

与此同时,您可以使用autoenv这个小型工具,它会在进入目录时自动在.env文件中运行代码,而在离开目录时在.env.leave中运行代码(支持bash / zsh和其他几个)。

摘自自述文件的一个简单示例,很好地说明了该功能:

$ echo "echo 'whoa'" > project/.env
$ cd project
whoa

要加载conda环境,您的.env看起来应该像这样:

conda activate <my_env>

注意1:在开始使用GitHub自述文件的 Configuration 部分之前,请先使用它。

注释2: autoenv 的作者实际上建议尝试使用direnv。但是,我从未使用过它,因此无法对此发表评论。

来自 autoenv 的自述文件:

  

您可能应该改用direnv。简而言之,它是更高质量的软件。但是,autoenv仍然很棒。也许两者都尝试? :)