2014-02-27 45 views
1

當我登錄到我的服務器,在virtualenv中自動進入到X.爲什麼屏幕上有多個virtualenvs?

(X)[[email protected] ~]$ 

但是當我用screen,它改變

(X)(X)[[email protected] ~]$ 

如果我再嘗試改變虛擬環境(即source Y/bin/activate)我得到

(Y)(X)[[email protected] ~]$ 

當我嘗試deactivate一旦我得到

(X)[[email protected] ~]$ 

但第二次,我得到一個錯誤。如果我然後嘗試將虛擬環境更改爲Y,則會回到(Y)(X)

這是怎麼回事?

+0

你在執行什麼(例如)'.bashrc'來在登錄時自動啓動virtualenv? –

+0

源$ HOME/virtualenvs/X/bin/active –

回答

1

當您遠程登錄時,bash(或您的shell)執行source $HOME/virtualenvs/X/bin/activate並修改PS1(shell提示符)以添加(X)前綴。

當您啓動屏幕,創建一個新的外殼這反過來執行source $HOME/virtualenvs/X/bin/activate,但出於某種原因,現有的virtualenv是不是屏幕中提供了這樣它會創建一個新的virtualenv和前綴PS1與它的名字(也(X))但是PS1在這一點上已經有了(X)前綴,所以你可以看到double(X)(X)。

當您手動source Y/bin/activate時,現有的virtualenv從屏幕中的X切換到Y.因此提示更改爲(Y)(X)...

當你deactivate,你跳出Y virutalenv,但隨後的deactivate命令失敗,因爲最初的X virtualenv在屏幕外殼之外。

如果你然後退出屏幕和deactivate,你會跳出最初的X virtualenv。

相關問題