सारांश
आपके साथ काम कर रहे मॉड्यूल की तीन सामान्य श्रेणियां हैं:
- ओएस पैकेज सिस्टम वाले सभी उपयोगकर्ताओं के लिए स्थापित सहायक प्रोग्राम। (इसमें पायथन में प्रोग्रामिंग करने वाले लोगों द्वारा उपयोग किए जाने वाले टूल और लाइब्रेरी भी शामिल हो सकते हैं; नीचे देखें।) इनके लिए आप उन OS पैकेजों का उपयोग करते हैं जहाँ आप कर सकते हैं, और
pip
जहाँ आवश्यक हो, सिस्टम निर्देशिकाओं में इंस्टॉल हो जाता है।
- एक विशेष उपयोगकर्ता द्वारा केवल अपने उपयोग के लिए स्थापित कार्यक्रमों का समर्थन करने वाले, और स्क्रिप्टिंग भाषा के रूप में पायथन के "दिन-प्रतिदिन" उपयोग के कुछ पहलुओं के लिए भी। इन के लिए वह उपयोग करती है
pip --user
, शायद pyenv या pythonz , और इसी तरह के उपकरण और रणनीति।
- एक विशिष्ट अनुप्रयोग के विकास और उपयोग का समर्थन करने वाले। इनके लिए आप
virtualenv
(या एक समान उपकरण) का उपयोग करें।
यहां प्रत्येक स्तर को पिछले स्तर से भी समर्थन मिल सकता है। उदाहरण के लिए, हमारा उपयोगकर्ता (2) OS संकुल के माध्यम से स्थापित पायथन इंटरप्रेटर पर निर्भर हो सकता है।
इसे थोड़ा और विस्तार से जाना:
सिस्टम प्रोग्राम और पैकेज
पायथन में लिखे गए प्रोग्राम जिन्हें आप "बस चलाना चाहते हैं" आसान हैं: बस ओएस इंस्टॉल टूल का उपयोग करें और उन्हें जो कुछ भी ज़रूरत है उसे लाने दें; यह एक गैर-पायथन कार्यक्रम से अलग नहीं है। यह पायथन टूल्स / लाइब्रेरीज़ (जैसे कि पायथन इंटरप्रेटर खुद!) में लाने की संभावना है कि आपकी मशीन पर उपयोगकर्ता भरोसा करना शुरू कर सकते हैं; यह तब तक समस्या नहीं है जब तक वे निर्भरता को समझते हैं और, आदर्श रूप से, मेजबान पर इसे संभालने के लिए वैकल्पिक साधनों को जानते हैं जो उन निर्भरताओं को प्रदान नहीं करते हैं।
इस तरह की निर्भरता का एक सामान्य और सरल उदाहरण मेरी व्यक्तिगत स्क्रिप्ट में से कुछ है, ~/.local/bin/
जिसके साथ शुरू होता है #!/usr/bin/env python
। ये आरएच / सेंटोस 7 पर ठीक काम करेंगे (इसलिए जब तक वे पायथन 2 के तहत चलते हैं) और सबसे (लेकिन सभी नहीं) उबंटू स्थापित करता है; वे एक मूल डेबियन इंस्टॉल या विंडोज पर नहीं करेंगे। जितना मैं अपने निजी वातावरण को ओएस पैकेजों पर निर्भरता के तरीके से नापसंद करता हूं (मैं कई अलग-अलग ओएस पर काम करता हूं), ऐसा कुछ मुझे काफी स्वीकार्य लगता है; दुर्लभ मेजबानों पर मेरी बैकअप योजना में एक सिस्टम पायथन नहीं है और एक को प्राप्त नहीं हो सकता है जैसा कि नीचे वर्णित उपयोगकर्ता प्रणाली के साथ जाना है।
एक प्रणाली अजगर दुभाषिया का उपयोग करने वाले लोग भी आमतौर पर प्रणाली पर निर्भर होते हैं pip3
। इस बारे में जहां मैं आमतौर पर अपने सिस्टम की निर्भरता पर रेखा खींचता हूं; virtualenv
आगे से सब कुछ मैं अपने आप से निपटता हूं। (उदाहरण के लिए, मेरा मानक सक्रिय स्क्रिप्ट पथ में जो कुछ भी है pip3
या उस पर निर्भर करता pip
है, लेकिन virtualenv
वर्चुअल वातावरण बनाते समय बूटस्ट्रैप की अपनी प्रति डाउनलोड करता है ।
उस ने कहा, संभवत: ऐसी परिस्थितियां हैं जहां विकास के वातावरण को अधिक उपलब्ध कराना पूरी तरह से उचित है। आपके पास जटिल पैकेज (जैसे DBMS) में पाइथन इंटरफेस हो सकता है, जहाँ आप उस के सिस्टम संस्करण का उपयोग करना चाहते हैं और आपको लगता है कि यह सबसे अच्छा है कि आप सिस्टम को उस विशेष लायब्रेरी लाइब्रेरी कोड का चयन करने दें जिससे आप उससे बात करेंगे। या आप पायथन वर्ग के लिए एक बुनियादी विकास के वातावरण के साथ बहुत सारे मेजबानों को तैनात कर सकते हैं, और मानक तकनीकी पैकेजों के साथ स्वचालित करना सबसे आसान पाते हैं।
उपयोगकर्ता "दिन-प्रतिदिन" कार्यक्रम और पैकेज
उपयोगकर्ताओं के पास लाइब्रेरी या प्रोग्राम हो सकते हैं जो एक आभासी वातावरण में अच्छी तरह से फिट नहीं होते हैं क्योंकि वे पहली जगह में आभासी वातावरण बनाने में मदद करना चाहते हैं (जैसे, virtualenvwrapper ) या वे चीजें हैं जो आप आमतौर पर कमांड लाइन से भी उपयोग करते हैं गैर-पायथन काम कर रहा है। यहां तक कि अगर वे इनमें से सिस्टम संस्करण स्थापित करने की क्षमता रखते हैं, तो वे स्वयं को स्थापित करने में अधिक सहज महसूस कर सकते हैं (जैसे, क्योंकि वे उपकरण के नवीनतम संस्करण और इसकी निर्भरता का उपयोग करना चाहते हैं)।
आम तौर पर pip --user
लोग इसके लिए उपयोग कर रहे होंगे, हालांकि कुछ निर्भरताएं, जैसे कि पायथन इंटरप्रेटर, इसके लिए थोड़ी अधिक आवश्यकता होती है। pyenv और pythonz व्यक्तिगत दुभाषियों के निर्माण के लिए उपयोगी होते हैं (चाहे ~/.local/bin
डिफॉल्ट दुभाषिया या अन्यथा स्थापित हो), और निश्चित रूप से एक हमेशा स्रोत से "हाथ से" निर्माण कर सकते हैं यदि देव पुस्तकालय उपलब्ध हैं।
मैं यहां स्थापित नंगे न्यूनतम चीजों को रखने की कोशिश करता हूं: virtualenvwrapper (क्योंकि मैं इसे लगातार उपयोग करता हूं) और शायद पाइप का नवीनतम संस्करण। मैं व्यक्तिगत लाइब्रेरी के लिए मानक पुस्तकालय के बाहर या पायथन 3 पर निर्भरता से बचने की कोशिश करता हूं, जिसे मैं कई मेजबानों में उपयोग करने के लिए लिखता हूं। (हालांकि हम देखेंगे कि जब तक मैं इन व्यक्तिगत लिपियों को पायथन में ले जाऊंगा, तब तक मैं इसे पकड़ सकता हूं।)
अलग अनुप्रयोग विकास और रनटाइम वातावरण
यह सामान्य virtualenv बात है। विकास के लिए आपको लगभग हमेशा एक वर्चुअलेनव का उपयोग करना चाहिए ताकि यह सुनिश्चित हो सके कि आप सिस्टम निर्भरता का उपयोग नहीं कर रहे हैं, या अक्सर विभिन्न पायथन संस्करणों के खिलाफ परीक्षण करने के लिए एक से अधिक हैं।
ये वर्चुअल वातावरण बहुत अधिक निर्भरता वाले अनुप्रयोगों के लिए भी अच्छे हैं जहाँ आप अपने उपयोगकर्ता वातावरण को प्रदूषित करने से बचना चाहते हैं। उदाहरण के लिए, मैं आमतौर पर जुपिटर नोटबुक और जैसे चलाने के लिए एक virtualenv सेट करता हूं ।