当我登录我的服务器时,virtualenv会自动转到X.
(X)[andrew@hyperion ~]$
但是当我使用screen
时,它会变为
(X)(X)[andrew@hyperion ~]$
如果我然后尝试更改虚拟环境(即source Y/bin/activate
),我会
(Y)(X)[andrew@hyperion ~]$
一旦我
,我尝试deactivate
(X)[andrew@hyperion ~]$
但第二次,我收到了一个错误。如果我然后尝试将虚拟环境更改为Y
,那么它就会回到(Y)(X)
。
这里发生了什么?
答案 0 :(得分:1)
远程登录时,bash(或shell)执行source $HOME/virtualenvs/X/bin/activate
并修改PS1
(shell提示符)以添加(X)
前缀。
当您启动屏幕时,会创建一个新的shell,然后执行source $HOME/virtualenvs/X/bin/activate
,但由于某种原因,现有的virtualenv在屏幕内不可用,因此它会创建一个新的virtualenv和前缀PS1
它的名称(也是(X)
),但此时PS1已经有(X)前缀,所以你看到双(X)(X)。
当您手动source Y/bin/activate
时,现有的virtualenv会从屏幕内的X切换到Y.因此,提示会更改为(Y)(X)...
。
当你deactivate
时,你跳出Y virutalenv,但随后的deactivate
命令失败,因为初始X virtualenv在屏幕外壳之外。
如果您退出屏幕并deactivate
,您将跳出最初的X virtualenv。