Python Virtualenvwrapper的“workon”和Zsh

我使用virtualenvwrapper创建了一个名为augpy的virtualenv.当我输入workon augpy时,它可以正常工作并正确激活.但是,当我尝试单独使用workon列出virtualenvs时,我得到一个奇怪的输出:

$workon
]7;file://new-host.home/Users/Me/.virtualenvsaugpy

我不知道为什么 – 也许它对我正在使用的shell感到困惑?我目前正在使用zsh(5.0.2,OSX 10.8)加上oh-my-zsh作为我的默认shell.当我在bash中键入workon时,我得到了正确的结果(并且自动完成也有效):

$workon
augpy

我应该为zsh设置哪些具体内容?

最佳答案 这是部分答案,我担心.

你看到的问题与oh-my-zsh无关.该问题在virtualenvwrapper.sh的第539行引入.

在zsh中调用的子shell返回STDOUT上的最后一个工作目录,包含在控制字符中.这很容易验证:

(cd /) | cat -v

我无法在任何地方找到此功能.也许是最近推出的,比如zsh 5.0?

在virtualenvwrapper.sh中的virtualenvwrapper_show_workon_options()函数中调用的fmt命令使得返回的路径可见,从而搞砸了输出.

更新:

在下面的evadeflow评论的推动下,我做了一些进一步的挖掘,发现实际的问题在于我改变OS X终端代理图标的方式.实际上,事实证明,oh-my-zsh使用完全相同的方法.在撰写本文时,我已经在GitHub上提交了一个pull请求,以便在oh-my-zsh中修复此问题.

点赞