वर्तमान Virtualenv का नाम कैसे प्रदर्शित करें?


20

मैं उपयोग कर रहा हूँ virtualenv, virtualenvwrapper, zsh, oh-my-zsh, टर्मिनेटर, Crunchbang पर।

मैं वर्तमान के नाम प्रदर्शित करने के लिए कोशिश कर रहा हूँ virtualenvइसलिए की तरह

workon example
(example)... 

मैंने कई समाधानों की कोशिश की है कोई भी काम नहीं करता है, यहाँ मेरी .zshrc फ़ाइल है, मुझे पता है कि इसे ठीक करने के लिए कोई बड़ी बात नहीं है लेकिन मैं सही समाधान नहीं ढूंढ सकता। पिछली बार जब मैंने Django के विकास के लिए लिनक्स का उपयोग किया था, तब तक यह एक लंबा समय रहा है, मैं भूल गया कि मैं क्या करता था।

अभी, मैं देखता हूं username@crunchbang, मैं यह नहीं बता सकता कि मैं किस virtualenv का उपयोग कर रहा हूं।


मेरा मानना ​​है कि आप पूछ रहे हैं कि अपना प्रॉम्प्ट कैसे सेट करें ताकि यह पता चले कि आप किस वर्चुअलएनवी में हैं, सही है?
स्लम

@ एसएलएम हां बिल्कुल
लिनोब

जवाबों:


11

शेल का संकेत

अपने अंदर virtualenvके माहौल एक फ़ाइल, है bin/activate। आप इस फाइल को एडिट कर सकते हैं अपने प्रॉम्प्ट को बदलने के लिए जो भी आप इसे पसंद करना चाहते हैं। विशेष रूप से फ़ाइल का यह भाग:

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

चर PS1एक विशेष चर है जो यह नियंत्रित करता है कि शेल का संकेत कैसा दिखेगा। इसके मूल्य को बदलने से आपका virtualenvसंकेत बदल जाएगा :

PS1="(this is my prompt) "

उदाहरण

  1. एक नमूना वातावरण बनाएँ।

    $ virtualenv tst-env
  2. जब आप virtualenvआम तौर पर इस फ़ाइल को स्रोत का उपयोग कर रहे हैं ।

    $ cd $HOME/tst-env
    
    $ source bin/activate
    (tst-env)[saml@grinchy tst-env]$ 
  3. फ़ाइल PS1में वैरिएबल में उपरोक्त परिवर्तन करने के बाद bin/activateअब मेरा संकेत है:

    $ source bin/activate
    (tst-env)

ऐसा करने के लिए यहां आधिकारिक निर्देश दिए गए हैं


अब इसे आज़माया, इसे ठीक नहीं किया
Lynob

यहाँ मेरी सक्रिय फ़ाइल pastebin.com/tZqdr1Yz है
Lynob

जब आप activateफ़ाइल को स्रोत करते हैं तो क्या होता है ? आपकी फ़ाइल ने मेरे लिए ठीक काम किया।
स्लम

मुझे कोई आउटपुट नहीं दिखाई देता है, इसलिए मैं यह नहीं बता सकता कि क्या होता है, इसके virtualenvअलावा अन्य काम कर रहा है, मुझे कुछ भी नहीं दिख रहा है, शायद यह .zshrcमुद्दा है या virtualenvwrapper? क्या इस मुद्दे पर बहस हो सकती है? कृपया ध्यान दें कि मैं 2 virualenv निष्पादन योग्य फ़ाइलें, सामान्य है virtualenvऔर virtualenv-2.7यह सामान्य है या virtualenvदो बार डाउनलोड किया गया है? और यह है कि मैं virtualenv और virualenvwrapper स्थापित मामले में यह मायने रखता हैsudo pip install virtualenv
Lynob

@ फ़िशर - मैंने इसे उपयोग करके केवल डबल चेक किया zshऔर यह उसी के साथ भी काम करता है, इसलिए यह सबसे अधिक संभावना है। मुद्दा। आइए फिलहाल 2 virtualenv के सेटअप को अनदेखा करें। डीबग करने के लिए आप इसे set -xअपने शेल में सक्षम कर सकते हैं और फिर source activateकमांड को फिर से चला सकते हैं । आपको उन PS1=लाइनों को देखना चाहिए जहां प्रॉम्प्ट सेट हो रहा है।
SLM

3

यदि आप उपयोग कर रहे हैं virtualenvwrapperऔर zshआपकी ~/.virtualenvs/निर्देशिका में कई zsh हुक हैं जिनका उपयोग आप अपने वातावरण को अनुकूलित करने के लिए कर सकते हैं। यहाँ इन के बारे में जानकारी का एक सा है। आप अपने शेल प्रॉम्प्ट PS1में वर्तमान कार्य virtualenvको जोड़कर एक अद्यतन के लिए मजबूर कर सकते हैं :

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

को ~/.virtualenvs/postactivate। टैग हटाने के लिए जब आप deactivateजोड़ते हैं , तो:

PS1=$_OLD_VIRTUAL_PS1
builtin export PS1

सेवा ~/.virtualenvs/postdeactivate

एकमात्र (प्रशंसनीय) चीज जो इसे तोड़नी चाहिए वह ~/.zshrcएक में काम करते समय रिसोर्सिंग करती हैvirtualenv


मेरा मानना ​​है कि आप पोस्ट-स्क्रिप्ट को गलत मानते हैं। यह PS1 = $ _ OLD_VIRTUAL_PS1 बिल्ट \ एक्सपोर्ट PS1
ग्रेग हिल्स्टन

virtualenvwrapper पहले से ही डिफ़ॉल्ट रूप से अब ऐसा करता है। Virtualenvwrapper द्वारा बनाए गए venv में, बिन / सक्रिय स्क्रिप्ट में zsh और bash प्रॉम्प्ट दोनों के लिए venv नाम को प्री-पेंड करने के लिए कोड होता है!
एरिक वेस्ट्रुप

2

आपको अपना संपादन करने की आवश्यकता नहीं है ~/.zshrc

चूंकि आप इसके साथ काम कर रहे हैं इसलिए फाइलों में virtualenvwrapperविकल्प या हुक जोड़ना संभव है $WORKON_HOME/post(de)activate

यदि आप अधिक विवरण देखना चाहते हैं तो यहां परामर्श करें

उपरोक्त लिंक मुझे अगला करने की अनुमति देता है:

मेरे मामले में $WORKON_HOME=~/Envsक्योंकि मैंने virtualenvwrapper स्थापित करते समय इस पथ को संशोधित किया था; अगर आपके पास फोल्डर नहीं है ~/.virtualenvs

  1. postactivateमें स्थित फ़ाइल खोलें$WORKON_HOME

  2. इन पंक्तियों को जोड़ें:

    PS1="$_OLD_VIRTUAL_PS1"
    _OLD_RPROMPT="$RPROMPT"
    RPROMPT="%{${fg_bold[white]}%}(env: %{${fg[green]}%}`basename \"$VIRTUAL_ENV\"`%{${fg_bold[white]}%})%{${reset_color}%} $RPROMPT"
  3. सहेजें और आनंद लें!

    आप इस तरह से कुछ प्राप्त करेंगे: किया हुआ

  4. (वैकल्पिक) यदि आप चाहते हैं कि आप postdeactivateइस पंक्ति को जोड़ने के लिए फ़ाइल को संपादित कर सकें :

    RPROMPT="$_OLD_RPROMPT"


0

मैं सिर्फ ubuntu 14.04 पर इसका परीक्षण करता हूं और मुझे भी यही समस्या थी। इसे ठीक करने के लिए इसे अपने .zshrc पर जोड़ें

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

या टर्मिनल में इसे चलाएं

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

Mac OS XI में करना था

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

0

आप विषय है कि इस्तेमाल किया जा रहा पता है, आप सक्रिय VIRTUAL_ENV आधार नाम निकालते हैं और में इसका इस्तेमाल करने के एक समारोह में जोड़ सकते हैं PROMPT में चर * .zsh-विषय ~ / ओह-मेरी-zsh / विषयों पर स्थित फ़ाइल / और वह चाल करना चाहिए!

मेरे लिए यह डिफॉल्ट 'ओह-माय-ज़श' थीम यानी 'रॉबिरस्सेल' था जिसे कॉन्फ़िगर किया गया था।

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)'

उपरोक्त कोड जोड़ने से नीचे परिणाम उत्पन्न होता है:

यहाँ छवि विवरण दर्ज करें

(kunkka.com) वह वर्चस्व है जिसे मैंने अभी-अभी निष्क्रिय किया है।

थीम फ़ाइल को संपादित करने के बाद .zshrc फ़ाइल को स्रोत के लिए मत भूलना।

-> source ~/.zshrc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.