source bin/activate 未更新提示:我的 virtualenv 真的有效吗?如果没有,如何解决?

source bin/activate not updating prompt: Is my virtualenv really active? If not, how can this be fixed?

我第一次尝试 运行 virtualenv,当我 运行 以下代码时 shell 提示没有改变。

$ virtualenv test
New python executable in test/bin/python
Installing setuptools............done.
$ source test/bin/activate
$

我假设它没有激活我的环境,因为没有 (test)$ 提示。 virtualenv 命令正确创建了目录,所以激活文件在那里,它似乎不起作用?

我也试过这个命令,结果是一样的。

$ . test/bin/activate
$

我的虚拟环境 运行ning 和我只是看不到提示(有什么我可以 运行 检查的)吗?

我的虚拟环境是不是 运行ning 并且我没有正确激活它?

我正在使用 Python 3.6.0(从 Homebrew 安装)、virtualenv 15.1.0、Mac OS X 10.11.6 和 zsh(oh-my- zsh)

要判断您的 virtualenv 是否处于活动状态而不依赖于提示(shell 配置可以以持久的方式覆盖),请使用:

declare -p VIRTUAL_ENV

如果输出为:

declare: no such variable: VIRTUAL_ENV

...那么你的 virtualenv 确实没有激活。相比之下,如果输出是:

typeset -x VIRTUAL_ENV=/Users/jess/test

...然后它处于活动状态,但您的提示已被覆盖。


要在 zsh 中诊断此问题(激活失败,或提示覆盖未坚持),请使用:

PS4=':%x:%I+'  # the equivalent to this in bash would be PS4=':$BASH_SOURCE:$LINENO+'
set -x
source test/bin/activate

...这将打印源文件、行号和在 期间和 之后执行的所有命令,activate 脚本是来源的;这应该包括更新您的 PS1 的激活脚本(或者,可能出于某种原因决定不执行);并且可能包含一个函数挂钩,将您的 PS1 改回没有更新提示以显示 virtualenv 状态的版本。

感谢 Charles 的帮助,我发现是我的 oh-my-zsh 主题 (powerlevel9k) 没有显示提示。我只需要在 ~/.zshrc 描述的 here.

中添加 virtualenv Python 段

如果你在 iterm 上使用 oh-my-zsh 并且想要提示虚拟环境,那么, 在那个文件中做 open ~/.zshrc Add/update virtualenv 像这样 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context time battery dir vcs virtualenv custom_wifi_signal) 然后最后不要忘记 source ~/.zshrc