bash - 在进入/离开目录时激活/停用 conda virtualenvs

标签 bash anaconda conda

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

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

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

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

最佳答案

正如我的评论中提到的,目前不支持此功能。然而 conda's GitHub 上有一个悬而未决的问题。请求此功能。

同时您可以使用 autoenv ,一个小工具,进入目录时自动运行 .env.leave 文件中的代码,离开目录时自动运行 .env.leave 中的代码(支持 bash/zsh 和其他一些)。

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

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

要加载 conda 环境,您的 .env 将如下所示:

conda activate <my_env>

注 1:在开始使用之前,请先查看其 GitHub 自述文件的配置部分。

注2:autoenv的作者实际上建议尝试direnv反而。不过我从未使用过它,所以我无法评论它。

来自 autoenv 的自述文件:

you should probably use direnv instead. Simply put, it is higher quality software. But, autoenv is still great, too. Maybe try both? :)

关于bash - 在进入/离开目录时激活/停用 conda virtualenvs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58824674/

相关文章:

linux - 禁用终端命令

python - 在 Windows 上升级 TensorFlow

python - 找到与 Spyder 中的 IPython 控制台相对应的确切 .py 窗口/脚本

linux - 如何使用 bash 脚本关闭和重新打开 shell

python - 如何使用 yml 文件重新创建我的 conda 环境?

python - 如何在不同目录中从站点包导入模块?

bash - bash 中的重复否定 (!) 运算符不会相互否定

anaconda - 我经常得到 ResolvePackageNotFound

installation - Conda 包的离线安装顺序

bash - 如何将 “escape hell”传递给docker run