【问题标题】:Activate/deactivate conda virtualenvs on entering/leaving directories在进入/离开目录时激活/停用 conda virtualenvs
【发布时间】:2019-11-12 18:33:17
【问题描述】:

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

一旦我们将目录更改为上面的目录,环境就会被停用。这允许使用不同的 python 版本在项目或分析之间轻松切换(只需更改目录)。

有没有办法使用 (ana)conda 实现相同的行为?

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

【问题讨论】:

  • 根据this 问题,目前没有官方支持的方式来执行此操作,但是在该讨论中,您会找到可以工作的第 3 方 bash/zsh 解决方案的链接。
  • 谢谢。我认为对 autoenv 或该线程中链接的博客文章中的代码的简短解释将是一个很好的答案。

标签: bash anaconda conda


【解决方案1】:

正如我在评论中提到的,目前不支持此功能。然而,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 自述文件的配置部分。

注意 2:autoenv 的作者实际上建议尝试使用direnv。不过我没用过,无法评论。

来自 autoenv 的自述文件:

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

【讨论】:

    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2019-07-22
    • 2019-08-30
    • 1970-01-01
    • 2020-05-28
    相关资源
    最近更新 更多