मैं pip3
सिस्टम साइट-पैकेज में चीजों को स्थापित करने से बचने का दृढ़ता से सुझाव दूंगा । मैंने पहले ये तर्क दिए हैं लेकिन मैं आपको नोट्स दूंगा:
- सिस्टम अपडेट सब कुछ तोड़ देता है
- उपयुक्त पैकेजों को स्थापित करने से पाइप-स्थापित चीजों को अधिलेखित किया जा सकता है
- संस्करण संघर्ष
- वितरण उन्नयन अप्रत्याशित अराजकता है । गंभीरता से। मैंने इन बालों को खो दिया है।
मैं दृढ़ता से उपयोग की वकालत करूंगा virtualenv
। जहाँ भी जाना है वहाँ यह एक बड़े पैमाने पर दर्द है, लेकिन एक बार जब आप इसे स्थापित कर लेते हैं तो आपके पास अपने पूर्ण नियंत्रण के तहत एक पूर्ण पायथन वातावरण होता है। इसका मतलब अधिक काम है (आपको अपडेट के लिए चीजों को जांचना होगा और pip
वास्तव में अभी तक वहां मदद नहीं करनी है) लेकिन आपको उबंटू के क्या करने की चिंता नहीं है।
मेरे पास प्रत्येक साइट के लिए एक वातावरण है (बस एक उपनिर्देशिका में कहा जाता है venv
)। कुछ लोग-मुझे छोड़कर, एक बार - कई साइटों के बीच अपने वातावरण को साझा करना पसंद करते हैं। मुझे अपडेट जारी करने के मामले में बनाए रखना आसान लगा, लेकिन कुछ साइटें नाजुक हो सकती हैं या पुराने संस्करणों की आवश्यकता होती है और इससे पूरा वातावरण वापस आ जाता है। YMMV।
इसे स्थापित करने के संदर्भ में, और बस मुझे थप्पड़ मारने के virtualenv
लिए, अजगर 3 के लिए पैक नहीं किया गया है, इसलिए हमें इसका उपयोग करना होगा pip3
:
$ sudo pip3 install virtualenv
...
$ virtualenv-3.3 myenv
Using base prefix '/usr'
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
Installing setuptools, pip...done.
$ source myenv/bin/activate # This is important!
आपके bash PS1 को अब (myenv)
आपको एक अलग वातावरण में रहने देना चाहिए । हम चीजों के सही संस्करणों पर जांच करने के लिए पर्यावरण का परीक्षण कर सकते हैं (शुरुआत के लिए सिस्टम संस्करणों का उपयोग नहीं कर रहे हैं):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
और फिर आप बस को आगे बढ़ा सकते हैं जैसे कि आप ब्रह्मांड के स्वामी थे। आपको pip
अब उपयोग करने के लिए रूट की आवश्यकता नहीं है और आपको निर्दिष्ट करने की आवश्यकता नहीं है pip3
। यह अभी बहुत अधिक अनुकूल है।
$ pip install django umemcache
...
यदि आप इसे uwsgi
होस्ट करने के लिए कुछ का उपयोग कर रहे हैं (तो आपको चाहिए) इसका -H ध्वज (या होम कॉन्फिगर तर्क) का उपयोग यह बताने के लिए करें कि पायथॉन वातावरण कहाँ रहता है।
विकास को आसान बनाने के लिए, आप अपने virtualenv
वातावरण को स्वचालित रूप से "माउंट" कर सकते हैं। वहाँ कई पटकथाएँ हैं, लेकिन यह मेरी है (यह मेरे सबसे नीचे रहता है ~/.bashrc
:
export VENVDIR="/web"
export VENVDIR_VENV="$VENVDIR/venv"
venvcd() {
wd=$(pwd)
[[ $wd == $VENVDIR/* || $wd == $VENVDIR ]] && wasin=true || unset wasin
builtin cd "$@"
wd=$(pwd)
if [[ $wd == $VENVDIR/* || $wd == $VENVDIR ]]; then
source $VENVDIR_VENV/bin/activate
else
[ $wasin ] && deactivate
fi
}
alias cd="venvcd"
cd .
जब भी मैं cd
में /web
(जहां मेरे सारे विकास वेबसाइटों जमा हो जाती है), यह virtualenv मेरे लिए mounts। ध्यान दें कि मेरे पास मेरी सभी साइटों के लिए केवल एक ही वातावरण है, इसलिए यदि आप कुछ ऐसा ही करते हैं तो यह केवल आपको सूट करेगा। कर रहे हैं समान काम करने के कई अन्य तरीकों से ।