Mevcut Virtualenv'in adı nasıl görüntülenir?


20

Ben kullanıyorum virtualenv, virtualenvwrapper, zsh, oh-my-zshCrunchBang üzerinde, terminatör.

Ben akımın adını görüntülemek çalışıyorum virtualenvşöyle

workon example
(example)... 

Hiçbiri işe yaramaz gibi görünen birçok çözümü denedim, işte benim .zshrc dosyası, düzeltmek için büyük bir şey olmadığını biliyorum ama doğru çözümü bulamıyorum. Django gelişimi için Linux'u en son kullandığımdan bu yana uzun zaman geçti, ne yaptığımı unuttum.

Şu anda, username@crunchbanghangi virtualenv kullandığımı anlayamıyorum.


Hangi sanal formda olduğunuzu gösterecek şekilde isteminizi nasıl ayarlayacağınıza inanıyorum, doğru mu?
slm

@slm yes aynen
Lynob

Yanıtlar:


11

Shell'in istemi

Senin İçinde virtualenvçevre bir dosyasıdır bin/activate. İsteminizi görünmesini istediğiniz şekilde değiştirmek için bu dosyayı düzenleyebilirsiniz. Özellikle dosyanın bu bölümü:

...
else
    PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
...

Değişken PS1, bir kabuğun isteminin nasıl görüneceğini kontrol eden özel bir değişkendir. Değerini değiştirmek virtualenvisteminizi değiştirir :

PS1="(this is my prompt) "

Misal

  1. Örnek bir ortam oluşturun.

    $ virtualenv tst-env
  2. Kullanırken virtualenvgenellikle bu dosyayı kaynak.

    $ cd $HOME/tst-env
    
    $ source bin/activate
    (tst-env)[saml@grinchy tst-env]$ 
  3. Değişkene Yukarıdaki değişikliği yaptıktan sonra PS1içinde bin/activatedosyanın benim istemi şimdi şudur:

    $ source bin/activate
    (tst-env)

İşte bunun nasıl yapılacağı ile ilgili resmi talimatlar .


şimdi denedim, düzeltmedi
Lynob

İşte benim aktif
dosyam

activateDosyayı kaynakladığınızda ne olur ? Dosyanız benim için iyi çalıştı.
slm

hiçbir çıkış görüyorum, bu yüzden ne olduğunu söyleyemiyorum virtualenv, ben hiçbir şey görmüyor dışında çalışıyor, belki de .zshrcsorun veya virtualenvwrapper? Bu hata ayıklanabilir mi? 2 virualenv yürütülebilir dosyaları, normal virtualenvve virtualenv-2.7bu normal veya virtualenviki kez indirildi mi lütfen unutmayın. ve bu nasıl olursa olsun ben virtualenv ve virualenvwrapper yüklüsudo pip install virtualenv
Lynob

@Fischer - Sadece kullanarak iki kez kontrol ettim zshve bununla da çalışıyor, bu büyük olasılıkla bir env. konu. Şimdilik 2 virtualenv'in kurulumlarını görmezden gelelim. Hata ayıklamak set -xiçin kabuğunuzda etkinleştirebilir ve source activatekomutu yeniden çalıştırabilirsiniz . PS1=İstemin ayarlandığı satırları görmelisiniz .
slm

3

Kullanıyorsanız virtualenvwrapperve dizininizde ortamlarınızı özelleştirmek için kullanabileceğiniz zshbir dizi zsh kanca ~/.virtualenvs/varsa. İşte bunlarla ilgili biraz bilgi. Aşağıdakileri ekleyerek PS1güncel çalışmayı virtualenvkabuk isteminize ekleyecek bir güncellemeyi zorlayabilirsiniz :

_OLD_VIRTUAL_PS1=$PS1
PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1"
builtin \export PS1

için ~/.virtualenvs/postactivate. Siz etiketini kaldırmak için şunu deactivateekleyin:

PS1=$_OLD_VIRTUAL_PS1
builtin export PS1

için ~/.virtualenvs/postdeactivate

Bu kırmalıyım sadece (akla yatkın) şey, kaynak bulma edilir ~/.zshrca çalışırkenvirtualenv


Ben postdeactivate betiğin bir hata var inanıyorum. PS1 = $ _ OLD_VIRTUAL_PS1 yerleşik \ ihracat
PS1'i okumalıdır

virtualenvwrapper bunu varsayılan olarak zaten yapıyor. Virtualenvwrapper tarafından oluşturulan venv'de, bin / enable komut dosyası venv adını hem zsh hem de bash istemlerine önceden eklemek için kod içerir!
Erik Westrup

2

Düzenlemenize gerek yok ~/.zshrc .

Birlikte çalıştığınız için, virtualenvwrapperseçenek veya kanca eklemek mümkündür.$WORKON_HOME/post(de)activate dosyalara .

Daha fazla ayrıntı görmek istiyorsanız buraya başvurun .

Yukarıdaki bağlantı bir daha yapmama izin veriyor:

Benim durumumda, $WORKON_HOME=~/Envsvirtualenvwrapper yüklediğimde bu yolu değiştirdiğim için; Eğer yapmadıysanız, klasöre sahip olmalısınız ~/.virtualenvs.

  1. Dosyasını açın postactivatebulunan$WORKON_HOME

  2. Bu satırları ekleyin:

    PS1="$_OLD_VIRTUAL_PS1"
    _OLD_RPROMPT="$RPROMPT"
    RPROMPT="%{${fg_bold[white]}%}(env: %{${fg[green]}%}`basename \"$VIRTUAL_ENV\"`%{${fg_bold[white]}%})%{${reset_color}%} $RPROMPT"
  3. Tasarruf edin ve tadını çıkarın!

    Bunun gibi bir şey elde edeceksiniz: tamam

  4. (İSTEĞE BAĞLI) İsterseniz postdeactivatebu satırı eklemek için dosyayı düzenleyebilirsiniz :

    RPROMPT="$_OLD_RPROMPT"


0

Ben sadece ubuntu 14.04 üzerinde test ve aynı sorunu vardı. Düzeltmek için bunu .zshrc'nize ekleyin

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

veya bunu terminalde çalıştırın

echo source /usr/share/virtualenvwrapper/virtualenvwrapper.sh >> ~/.zshrc

Mac OS XI yapmak zorunda

echo source /usr/local/bin/virtualenvwrapper.sh >> ~/.zshrc

0

Kullanılan temayı biliyorsanız, etkinleştirilmiş VIRTUAL_ENV temel adını almak için bir işlev ekleyebilir ve bunu ~ / .oh-my-zsh / themes / konumunda bulunan * .zsh-theme dosyasındaki PROMPT değişkeninde kullanabilirsiniz. ve bu hile yapmalı!

Benim için varsayılan 'oh-my-zsh' teması yani yapılandırılmış olan 'robbyrussels' temasıydı .

function virtualenv_info {
    [ $VIRTUAL_ENV ] && echo '('`basename $VIRTUAL_ENV`') '
}

local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
PROMPT='${ret_status} $(virtualenv_info) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'

Yukarıdaki kodu eklemek aşağıdaki sonucu doğurdu:

resim açıklamasını buraya girin

(kunkka.com) az önce devre dışı bıraktığım sanal .

Tema dosyasını düzenledikten sonra .zshrc dosyasını kaynaklamayı unutmayın.

-> source ~/.zshrc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.