我第一次尝试运行virtualenv,当我运行以下代码时,shell提示符没有改变。
$ virtualenv test
New python executable in test/bin/python
Installing setuptools............done.
$ source test/bin/activate
$
我假设它没有激活我的环境,因为没有(test)$
提示。virtualenv
命令正确创建目录,因此激活文件在那里,只是似乎不起作用?
我也尝试过这个命令,它给出了相同的结果。
$ . test/bin/activate
$
我的虚拟环境是否正在运行,我只是看不到提示(我可以运行一些东西来检查)?
或
我的虚拟环境是否只是没有运行,我没有正确激活它?
我正在使用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
。那么你的虚拟环境真的不活跃了。相比之下,如果输出为:
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 状态的版本。
感谢查尔斯的帮助,我发现是我的oh-my-zsh主题(powerlevel9k)没有显示提示。我只需要在这里描述的~/.zshrc
中添加virtualenv
Python 段。
如果您在 iterm 上使用 oh-my-zsh 并想提示虚拟环境,那么,open ~/.zshrc
像这样在该文件中添加/更新 virtualenvPOWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context time battery dir vcs virtualenv custom_wifi_signal)
然后最后不要忘记source ~/.zshrc