【问题标题】:Adding click autocompletion to conda env activate script将点击自动完成添加到 conda env 激活脚本
【发布时间】:2020-03-24 16:42:20
【问题描述】:

我正在使用一个使用 click 自动完成功能的 Python 库。由于我已经在 conda env 中安装了该库,因此我希望自动完成功能与之相关联。 (另外,由于它没有安装在我的主要 Python 环境中,将 eval "$(_FOO_BAR_COMPLETE=source_zsh foo-bar)" 添加到我的 .zshrc 不起作用。)library I'm using 的文档说“如果渐变安装在虚拟环境中,则以下必须添加到activate 脚本中”:

eval "$(_GRADIENT_COMPLETE=source gradient)"

我最初将此添加到~/miniconda3/envs/my_env/lib/python3.6/venv/scripts/common/activate,但自动完成功能不起作用。跑步

source ~/miniconda3/envs/my_env/lib/python3.6/venv/scripts/common/activate

确实可以工作,但是我的 shell 在提示符前添加了 via __VENV_DIR__,而且当我运行 conda activate myenv 时这不会自动发生,这让我觉得这是错误的做法它(一方面,当我执行conda deactivate my_env 时它不会被禁用)。

我正在寻找的是添加脚本以在conda activate x 上运行,然后在conda deactivate x 上结束的规范方法。 This 看起来很接近,但它是用于添加带有exportunset 的shell 变量。有没有办法通过click 的自动完成来做到这一点?

【问题讨论】:

    标签: autocomplete conda zsh oh-my-zsh


    【解决方案1】:

    the docs 中的指令进行小幅修改后似乎对我有用——我将eval 语句放在env_vars.sh 中,而在deactivate.d 中没有任何内容。

    我的理解是export 在整个会话中都在 shell 中持续存在,因此必须使用相应的unset 撤消。而eval 仅适用于该会话,因此一旦 conda env 被停用,它就不再有效。

    很高兴听到对 bash/conda 底层有更深入了解的人的更多信息!

    【讨论】:

      猜你喜欢
      • 2019-08-25
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2018-09-09
      • 2019-04-02
      • 1970-01-01
      相关资源
      最近更新 更多