Autocomplete 将单击自动完成添加到conda环境激活脚本

Autocomplete 将单击自动完成添加到conda环境激活脚本,autocomplete,conda,zsh,oh-my-zsh,Autocomplete,Conda,Zsh,Oh My Zsh,我正在使用一个使用自动完成的Python库。因为我已经在conda env中安装了库,所以我希望自动完成与之关联。(另外,由于它没有安装在我的主Python环境中,因此在我的.zshrc中添加eval“$(\u FOO\u BAR\u COMPLETE=source\u zsh FOO BAR)”无法工作。)的文档说明“如果gradient安装在虚拟环境中,则必须将以下内容添加到激活脚本中”: 我最初将其添加到~/miniconda3/envs/my_env/lib/python3.6/venv

我正在使用一个使用自动完成的Python库。因为我已经在conda env中安装了库,所以我希望自动完成与之关联。(另外,由于它没有安装在我的主Python环境中,因此在我的
.zshrc
中添加
eval“$(\u FOO\u BAR\u COMPLETE=source\u zsh FOO BAR)”
无法工作。)的文档说明“如果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通过uu VENV_DIR uu
预先添加到提示符中,而且当我运行
conda activate myenv
时,这不会自动发生,这让我觉得这是一种错误的方法(例如,当我运行
conda deactivate my_env
时,它不会被禁用)


我正在寻找的是一种规范的方法,可以添加一个脚本,在
conda activate x
上运行,然后在
conda deactivate x
上结束。看起来非常接近,但它用于添加带有
export
unset
的shell变量。有没有办法用
点击
的自动完成功能来实现这一点?

在对中的说明进行了一点修改后,我似乎对我有用-我将
eval
语句放在
env_vars.sh
中,而
deactivate.d
中没有任何内容

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

如果有人对《风帽下的康达》有更深入的了解,我会很高兴听到更多

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