यदि आप virtualenvwrapper का उपयोग कर रहे हैं (मैं अत्यधिक ऐसा करने की सलाह देता हूं), तो आप एक ही नाम के साथ स्क्रिप्ट का उपयोग करके अलग-अलग हुक को परिभाषित कर सकते हैं $VIRTUAL_ENV/bin/
। आपको पोस्टएक्टिनेट हुक की आवश्यकता है।
$ workon myvenv
$ cat $VIRTUAL_ENV/bin/postactivate
#!/bin/bash
# This hook is run after this virtualenv is activated.
export DJANGO_DEBUG=True
export S3_KEY=mykey
export S3_SECRET=mysecret
$ echo $DJANGO_DEBUG
True
यदि आप इस कॉन्फ़िगरेशन को अपने प्रोजेक्ट डायरेक्टरी में रखना चाहते हैं, तो बस अपने प्रोजेक्ट डायरेक्टरी से एक सिमिलिंक बनाएं $VIRTUAL_ENV/bin/postactivate
।
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
हर बार जब आप mkvirtualenv का उपयोग करते हैं तो आप हर बार सिम्लिंक्स के निर्माण को स्वचालित कर सकते हैं ।
निष्क्रिय करने पर सफाई
याद रखें कि यह अभ्यस्त अपने आप को साफ करता है। जब आप virtualenv को निष्क्रिय करते हैं, तो वातावरण चर बना रहेगा। सममित रूप से साफ करने के लिए आप इसमें जोड़ सकते हैं $VIRTUAL_ENV/bin/predeactivate
।
$ cat $VIRTUAL_ENV/bin/predeactivate
#!/bin/bash
# This hook is run before this virtualenv is deactivated.
unset DJANGO_DEBUG
$ deactivate
$ echo $DJANGO_DEBUG
याद रखें कि यदि पर्यावरण चर के लिए इसका उपयोग किया जा सकता है जो पहले से ही आपके वातावरण में सेट किया जा सकता है, तो यह परिणाम उन्हें पूरी तरह से virtualenv छोड़ने पर परेशान हो जाएगा। तो अगर यह सब संभावित है तो आप पिछले मूल्य को अस्थायी रूप से रिकॉर्ड कर सकते हैं, फिर इसे निष्क्रिय करने पर वापस पढ़ें।
सेट अप:
$ cat $VIRTUAL_ENV/bin/postactivate
#!/bin/bash
# This hook is run after this virtualenv is activated.
if [[ -n $SOME_VAR ]]
then
export SOME_VAR_BACKUP=$SOME_VAR
fi
export SOME_VAR=apple
$ cat $VIRTUAL_ENV/bin/predeactivate
#!/bin/bash
# This hook is run before this virtualenv is deactivated.
if [[ -n $SOME_VAR_BACKUP ]]
then
export SOME_VAR=$SOME_VAR_BACKUP
unset SOME_VAR_BACKUP
else
unset SOME_VAR
fi
परीक्षा:
$ echo $SOME_VAR
banana
$ workon myenv
$ echo $SOME_VAR
apple
$ deactivate
$ echo $SOME_VAR
banana