हमेशा की तरह, यह एक समझौता है, और मैं मानकों और पूर्वानुमान के मामले में गलती करता हूँ।मैं इस बात से भली-भांति परिचित हूं - विशेष रूप से एकल-उद्देश्य वाले पायथन कंटेनरों के साथअजगर:.*â विश्व स्तर पर सब कुछ स्थापित करके मल्टी-स्टेज बिल्ड प्राप्त करना लोकप्रिय है औरकॉपी

ऊपरसाइट-पैकेजपायथन इंस्टालेशन की गहराई से, या सेट करेंPythonuserbaseपर्यावरणपरिवर्ती तारककुछ इस तरह/अनुप्रयोग, और उपयोग करेंपिप इंस्टॉल--उपयोगकर्ताके बजायपाइप स्थापित करें, और तबकॉपीऊपरवह.सब इस आधार पर कि यह किसी तरह सरल है और अलगाव की एक परत काफी है।मैं अलगाव की एक परत की पर्याप्तता पर विवाद नहीं करता, लेकिन पिछले कुछ वर्षों में, मैंने पाया है कि उत्पादन में, सादगी के बारे में बात करते समय ध्यान में रखने के लिए एक से अधिक पहलू हैं।एक व्यापक विषय के रूप में, मेरा लक्ष्य हैनहीं

बिना सोचे समझे कुछ ~सर्वोत्तम प्रथाओं~ का पालन करना जो संदिग्ध भुगतान के लिए जटिलता जोड़ते हैं क्योंकि एक बड़े तकनीकी डेवलपर वकील ने एक सम्मेलन में ऐसा कहा था।


लेकिन मैं इसके बारे में सोचने में बहुत समय बिताता हूंद्वितीयक प्रभावमैं जो करता हूं उसका.मेरे लिए, जटिलता इस बारे में नहीं है कि मुझे कितनी कुंजियाँ दबानी हैं - यह इस बारे में है कि मैं जो कर रहा हूँ उसके परिणामों के बारे में तर्क करना कितना कठिन है।तो, यहां उन कारणों की मेरी अधूरी सूची है कि क्यों मैं अभी भी आभासी वातावरण का उपयोग करता हूं और भविष्य में ऐसा करने की योजना बना रहा हूं:

पूर्वानुमेयता और परिचितता

उनकी संरचना अच्छी तरह से परिभाषित है और एकल पायथन एप्लिकेशन को धारण करने के लिए डिज़ाइन की गई है।

मुझे पसंद है कि कैसे वे एक निर्देशिका पदानुक्रम में शामिल हैं

बिन,उदारीकरण, औरशेयर करनानिर्देशिकाएँ, इसे डिफ़ॉल्ट रूप से स्व-निहित अनुप्रयोगों के लिए एक बेहतरीन 'कंटेनर' बनाती हैं।यह सहायक फ़ाइलों के भंडारण को आमंत्रित करता है, जिसमें एक अतिरिक्त में विषम कॉन्फ़िगरेशन फ़ाइल भी शामिल हैवगैरहनिर्देशिका.यह सब उन्हें किसी चीज़ में डालने के लिए उपयुक्त बनाता है/ऑप्ट/ऐपया/अनुप्रयोग.

हाँ,दस साल पहले के विपरीत, अब आपको अपने एप्लिकेशन को अपने सिस्टम Python से अलग करने की आवश्यकता नहीं है।लेकिन रखते हुएआपकाएक अलग, अच्छी तरह से परिभाषित स्थान और संरचना में कोड का अपने आप में मूल्य होता है।मैं दर्जनों सेवाओं के लिए जिम्मेदार हूं, इसलिए मैं इसकी सराहना करता हूं

स्थिरतायह जानने के लिए कि मैं जो कुछ भी तैनात कर रहा हूं वह सब यहीं है/अनुप्रयोग, और यदि यह एक पायथन एप्लिकेशन है, तो मुझे पता है कि यह एक आभासी वातावरण है, और यदि मैं चलाता हूं/ऐप/बिन/पायथन, मुझे अपने एप्लिकेशन के साथ वर्चुअल वातावरण का पायथन मिलता है जो आयात करने और चलाने के लिए तैयार है।मानक और संचार

यह सब एकरूपता बनाता है

टीमों के भीतर और पार संचारआसान।हर कोई जानता है कि इसका क्या मतलब है अगर मैं कहता हूं/दस्तावेज़ करता हूं कि एक तैनाती आर्टिफैक्ट एक आभासी वातावरण है।और यदि वे ऐसा नहीं करते हैं, तो इंटरनेट दस्तावेज़ों से भरा पड़ा है - जिनमें ये भी शामिल हैंआधिकारिक एक.यह ऐसा है जैसे कबकालाहमें कोड शैली के बारे में सोचना और बहस करना बंद कर दिया और अधिक महत्वपूर्ण चीजों के लिए उन मानसिक संसाधनों को मुक्त कर दिया1.यह मानकों का अंतिम मूल्य है, भले ही किसी को उनके बारे में सब कुछ पसंद न हो।

और आभासी वातावरण रहे हैंएक मुख्य पायथन सुविधा12 साल के लिएऔर 2000 के दशक के मध्य से पायथन समुदाय में एक मुख्य अवधारणा।यह हमारे पास सबसे निकटतम चीज़ हैपायथन में संलग्न, मानकीकृत और अच्छी तरह से समझा जाने वाला एप्लिकेशन बिल्ड आर्टिफ़ैक्ट.यह एक विस्तृत सादृश्य है, लेकिन मैं इन्हें संकलित भाषाओं में एक गतिशील बाइनरी को जोड़ने के परिणाम के रूप में सोचता हूं।

आप उनका उपयोग कर सकते हैंस्थानीय रूप से, आप उनका उपयोग करके तैनात कर सकते हैंएक डिस्ट्रो पैकेज, और आप कर सकते हैंडॉकर कंटेनर का उपयोग करके उन्हें तैनात करें.यह हैअच्छाविकास और उत्पादन में समान उपकरण और आदिम का उपयोग करना।इसका मतलब है कि आप अपने उपकरणों को जानते हैं और आपके दिमाग में रखने के लिए कम चीजें हैं।इसलिए, अपने एप्लिकेशन को तैनात करने के लिए एक अलग विधि का उपयोग करने से बेहतर परिणाम प्राप्त होंगे।

आयात जटिलता पतन

यह आभासी वातावरण का एक सामान्य लाभ है - स्थानीय और डॉकर दोनों में - जिसे आप कर सकते हैंप्रासंगिक खोज पथों को संकीर्ण करेंजहां पायथन आयात करने के लिए आपके कोड की तलाश करेगा2.पाइथॉन को अंदर चलानापारित करके पृथक मोड-मैं इसे और भी कम कर देंगे.

इसलिए,अगरआप a) विश्व स्तर पर कभी भी कुछ भी इंस्टॉल न करें3,औरआप बी) का उपयोग करेंअजगरआभासी वातावरण से बाइनरीजबकिइसे पारित करना-मैं, आपजाननावह सब कुछ जो मानक लाइब्रेरी में नहीं हैअवश्यआभासी वातावरण में रहो.यह Python के आयात व्यवहार को और भी अधिक बनाता हैउम्मीद के मुताबिकऔर आयात को डिबग करने से हत्या का रहस्य कम हो जाता है।

जो हमें... तक लाता है

एक बोनस बिंदु जिसे सुरक्षित रूप से नजरअंदाज किया जा सकता है लेकिन मुझे इसे अपने दिमाग से उतारना होगा

जैसा मैं महसूस करता हूँ, नरक में वैसा कोई प्रकोप नहीं हैपिप इंस्टॉल--उपयोगकर्ता.यह एक आकर्षक उपद्रव है जिसने पायथन की खराब पैकेजिंग प्रतिष्ठा को काफी नुकसान पहुंचाया है।

इसका उपयोग मुख्य रूप से सिस्टम में हेरफेर करने के और भी बुरे प्रभावों को दर्शाने के लिए किया जाता है।साइट-पैकेजनिर्देशिका - टूटे हुए पायथन इंस्टॉलेशन का सबसे आम कारण।उपयोगकर्ता-स्थानीय इंस्टॉलेशन को सक्षम करने के लिए सभी4, जो आरंभ करने के लिए एक बुरा विचार है।उस अर्थ में,NPMअपनी परियोजना-निर्देशिका-स्थानीय-प्रथम पैकेजिंग के साथ पारिस्थितिकी तंत्र हमसे बहुत आगे था, हमारे पुराने, आलसी तरीकों में फंसा हुआ था।

अंत में, इसने पायथन इंस्टॉलेशन के बारे में तर्क को जोड़कर और भी जटिल बना दियाएक औरगतिशील भाग.अगर मेरे पास हर बार एक पैसा होता जब कोई बग ट्रैकर पर मेरे उपयोगकर्ता-स्थानीय पायथन पैकेज में अजीब सामग्री के कारण चिल्लाता, तो मुझे ऐसा नहीं करना पड़ता।प्रायोजन के लिए विनती करें.जितना मैं प्यार करता हूँपीडीएम, मैं हर दिन Cthulhu को धन्यवाद देता हूंपीईपी 582/__पाइपैकेज__अस्वीकार कर दिया गया क्योंकि इसे जोड़ा जाना थाएक औरभ्रम का वेक्टर.प्रोजेक्ट-स्थानीय पर मानकीकरण.वेनवभले ही यह स्पष्ट रूप से सही कदम थामैंमैंने अपने आभासी वातावरण को एक केंद्रीय स्थान पर संग्रहीत करना पसंद किया।

अंत में: जैसे,... आख़िर क्यों?

आप वास्तव में यहाँ किस समस्या को हल करने का प्रयास कर रहे हैं?यह कोई अतिरिक्त उपकरण या अतिरिक्त अवधारणा नहीं है - या तो यह वहीं हैमानक पुस्तकालय, या आप उपयोग कर रहे हैंपराबैंगनीपहले से।साथयूवी वेनव, एक आभासी वातावरण बनाने में इससे अधिक समय नहीं लगता हैmkdir.वह शायद हीथोड़ाबड़े, लेकिन क्या वे वास्तव में मायने रखते हैं?आप पायथन परियोजनाओं को उसकी सभी निर्भरताओं के साथ एक आसान-से-संभालने वाली निर्देशिका में अलग करने के एक मानक तरीके से बचकर कुछ भी सरल नहीं बना रहे हैं।

मुझे आश्चर्य है कि आभासी वातावरण के विरुद्ध कितने प्रतिरोध का कोई तकनीकी कारण नहीं है बल्कि यह निहित हैहोमब्रू प्रत्येक पायथन अपडेट के साथ उन्हें तोड़ रहा हैऔर डेबियन ने पाइथॉन इंस्टॉलेशन की कष्टप्रद अनबंडलिंग के साथ उनका उपयोग करना कठिन बना दिया है।

मुझे उम्मीद हैपराबैंगनीकी सुविधा और गति उनकी सार्वजनिक धारणा को बदल देगी।

उपसंहार

लेख की शुरुआत में मैंने जिन शॉर्टकट्स का वर्णन किया है, वे धारणाओं पर निर्भर हैंसाइट-पैकेजका स्थान और सुवाह्यता.वे उपयोग जैसी जटिलताओं का परिचय देते हैंपिप इंस्टॉल--उपयोगकर्ता(जो डॉकर में शब्दार्थ की दृष्टि से अजीब है और इसका उपयोग इस तरह की किसी चीज़ के लिए कभी नहीं किया गया था) और आप विकास में जो उपयोग कर रहे हैं उसकी तुलना में अपरिचित उपकरणों और प्रतिमानों की आवश्यकता हो सकती है।âââââââââââ

लेकिनमैं आपको कुछ भी करने के लिए मनाने की कोशिश नहीं कर रहा हूँ।मुझे एहसास है कि मेरे कुछ कारण अमूर्त ~वाइब्स~ पक्ष में हैं।यदि आप उन शॉर्टकट्स के मापदंडों के भीतर हैं और ट्रेड-ऑफ़ से खुश हैं, तो आप वह करने के लिए स्वतंत्र हैं जो आप चाहते हैं।लेकिन मुझे आशा है कि मैंने आपको यह निश्चित रूप से दिखा दिया हैकरता हैसामान्य तौर पर डॉकर में वर्चुअल वातावरण का उपयोग करना समझ में आता है - चाहे वह इसके लिए समझ में आता होआप, के लिए हैआपठान लेना।मैं हर बार अपना बचाव करते-करते थक गया हूं, इसलिए मैं यहां अपना पक्ष एक बार और हमेशा के लिए रख रहा हूं।

अगर इन सबके बाद भी आप हैंफिर भीपाइथॉन और डॉकर के बारे में मुझे क्या कहना है, इसमें रुचि रखते हुए, मैं शुरुआत करने की सलाह देता हूंउत्पादन के लिए तैयार डॉकर कंटेनरपराबैंगनी, जो इस बात का जीवंत दस्तावेज़ है कि मैं पायथन अनुप्रयोगों के लिए जितनी जल्दी हो सके डॉकर कंटेनर कैसे बनाता हूं।


पी.एस.मुझे विश्वास नहीं हो रहा है कि मैं इसे अपने आदरणीय की दसवीं वर्षगांठ पर लगभग आज ही प्रकाशित कर रहा हूं।âवर्चुअलएनव लाइव्स!!बेहतरी के लिए बहुत कुछ बदल गया है, लेकिन आभासी वातावरण देना जारी रखता है।

इस पोस्ट को संभव बनाया गयादानउन लोगों और निगमों से जो मेरे सार्वजनिक कार्यों की सराहना करते हैं।

क्या आप इस तरह की और सामग्री चाहते हैं?यहाँ मेरा मुफ़्त, कम मात्रा वाला, गैर-डरावना हैहाइनेक ने कुछ कियान्यूजलैटर!यह मुझे अपनी सामग्री सीधे आपके साथ साझा करने और अतिरिक्त संदर्भ जोड़ने की अनुमति देता है: