Python Virtualenvwrapper的“workon”和Zsh

2024-09-30 05:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我用virtualenvwrapper创建了一个名为augpy的virtualenv。当我输入workon augpy时,它工作正常,get被正确激活。然而,当我试图单独使用workon列出virtualenvs时,我得到了一个奇怪的输出:

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

我不知道为什么-也许是因为我用的外壳混淆了?我目前使用zsh(5.0.2,osx10.8)plusoh-my-zsh作为我的默认shell。当我在bash中输入workon时,我得到了正确的结果(并且自动完成也起作用):

^{pr2}$

有什么我应该为zsh设置的吗?在


Tags: hosthomenewgetvirtualenvvirtualenvs外壳users
2条回答

恐怕这是部分回答。在

你看到的问题和我的天哪,没有关系。这个问题是在virtualenvwrapper.sh的第539行介绍的。在

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

(cd /) | cat -v

我在任何地方都找不到这个功能的文档。比如说最近在zs0.5中引入了它?在

virtualenvwrapper.sh中的virtualenvwrapper_show_workon_options()函数中调用的fmt命令使返回的路径可见,从而导致输出混乱。在

更新:

在Evaleveflow下面的评论的提示下,我做了进一步的挖掘,发现真正的问题在于我改变OSX终端的代理图标的方式。事实上,事实证明,哦,我的zsh使用了完全相同的方法。在写这篇文章时,我已经在GitHub上提交了一个pull请求,以便在oh my zsh中修复这个问题。在

这也可以通过向STDERR而不是STDOUT发出受控制字符保护的路径来解决。在

在前面链接的macworld提示中,这需要将命令printf '\e]7;%s\a' "$PWD_URL"更改为printf '\e]7;%s\a' "$PWD_URL" 1>&2。在

相关问题 更多 >

    热门问题