मुझे क्लाउडियो जोलोविज़ द्वारा लिखित "हाइपरमॉडर्न पायथन टूलिंग" का प्रारंभिक संस्करण पढ़ने का मौका मिला, जो अप्रैल 2024 में रिलीज़ होने वाला है। मैंने जून 2023 संस्करण पढ़ा और एक समीक्षा लिखने के लिए प्रेरित हुआ क्योंकि मुझे कोई किताब नहीं मिली। इस विषय के बारे में पहले.
पुस्तक में शामिल विषय पहले केवल कॉन्फ़्रेंस वीडियो, तकनीकी लेख और ट्यूटोरियल में उपलब्ध थे, यह इस पर निर्भर करता था कि कौन किस प्रकार की सामग्री के साथ अधिक सहज है। मेरी राय में, अन्य स्रोतों से, यदि इन मुद्दों पर कोई ध्यान दिया गया है, तो यह बहुत सतही है। यह आमतौर पर पायथन इंटरप्रेटर को स्थापित करने के विभिन्न रूपों में समाप्त होता है।
जून 2023 तक, अर्ली एक्सेस बुक में 7 खंड हैं:
पहला खंड पायथन संस्करण के रिलीज़ चक्र का वर्णन करता है। यह अलग-अलग ऑपरेटिंग सिस्टम के लिए अलग-अलग इंस्टॉलेशन विधियों का वर्णन करता है: विंडोज, लिनक्स , मैकओएस, पायथन दुभाषियों के कई संस्करणों को स्थापित करने के लिए पाइनव का उपयोग, न केवल सीपीथॉन-आधारित, बल्कि पीपीपी, आयरनपाइथन, ज्योथन, पिस्टन और अन्य। यूनिक्स सिस्टम के लिए भी पाइलॉन्चर का उपयोग करने का एक उदाहरण दिया गया है। वैकल्पिक रूप से, एनाकोंडा का उपयोग करके इंस्टॉलेशन का एक उदाहरण दिया गया है।
दूसरा खंड चर्चा करता है कि पायथन वातावरण कैसे व्यवस्थित किया जाता है: दुभाषिया, प्रवेश बिंदु स्क्रिप्ट, मॉड्यूल (मानक लाइब्रेरी और तृतीय-पक्ष मॉड्यूल दोनों सहित), और साझा लाइब्रेरी (सी जैसे निम्न-स्तरीय भाषाओं से संकलित कस्टम कोड)। वर्चुअल वातावरण के उपयोग का उल्लेख किया गया है, जिसे Python3 में पेश किए गए अंतर्निहित वेनव मॉड्यूल का उपयोग करके बनाया जा सकता है, साथ ही विभिन्न ऑपरेटिंग सिस्टम के लिए उन्हें सक्षम करने में अंतर का भी उल्लेख किया गया है। पैकेज मैनेजर पेश किया गया है, बिल्ट-इन पिप और थर्ड-पार्टी पिपक्स दोनों। मॉड्यूल की खोज कैसे करें, इसकी सामान्य जानकारी दी गई है।
तीसरा खंड पायथन पैकेज इंडेक्स का परिचय देता है। हम एक सरल स्क्रिप्ट का उदाहरण देते हैं और एक प्रोजेक्ट बनाने से लेकर परीक्षण और वास्तविक पैकेज इंडेक्स दोनों में लोड करने तक का पूरा वर्कफ़्लो दिखाते हैं। एप्लिकेशन पैकेज बनाते समय मेटा जानकारी निर्दिष्ट करने के लिए pyproject.toml फ़ाइल का उपयोग किया जाता है। एक आधुनिक और मानकों के अनुरूप प्रोजेक्ट मैनेजर हैच (https://hatch.pypa.io/latest/) का उपयोग बिल्ड बैकएंड के रूप में किया जाता है। आधिकारिक PyPI अपलोड टूल: ट्विन का उपयोग पैकेज अपलोड टूल के रूप में किया जाता है। पैकेज विकल्प सूचीबद्ध हैं: एसडीआईएसटी और पहिए। किसी प्रोजेक्ट के लिए pyproject.toml फ़ाइल में मेटा जानकारी के साथ सबसे आवश्यक फ़ील्ड की एक सूची दी गई है।
चौथा खंड संभवतः सबसे अस्पष्ट समस्या उठाता है: किसी परियोजना में निर्भरता प्रबंधन की समस्या। दो विकल्प हैं: require.txt संभावित विविधताओं और संयोजनों के साथ, और pyproject.toml। आश्चर्य की बात है कि यहां कविता के बारे में कोई कहानी नहीं होगी, लेकिन पांचवें खंड में उसके वर्णन में ज्यादा समय नहीं लगेगा। पिप-टूल्स टूल का उपयोग करके तथाकथित निर्भरता लोकस उत्पन्न करने के लिए एक टूल के अस्तित्व के बारे में सीखना काफी दिलचस्प था।
पाँचवाँ खंड प्रसिद्ध कविता से संबंधित है, जो नियमित कार्यों के लिए एक स्वचालित उपकरण प्रदान करता है: निर्भरता प्रबंधन, एक पैकेज बनाना और इसे पैकेज इंडेक्स में प्रकाशित करना, आदि। पायप्रोजेक्ट के अंतर का वर्णन किया गया है। हमने pyproject.toml में पिछले अध्यायों में वर्णित अंतरों का वर्णन किया है जब हमने इसके सिंटैक्स से खुद को परिचित किया था। पायथन पारिस्थितिकी तंत्र में कविता के विकल्प हैं, जैसे हैच और माटुरिन।
धारा छह में पायथन डेवलपर्स के लिए रिफैक्टरिंग तत्वों के साथ परीक्षण पर एक संक्षिप्त केएमबी (युवा लड़ाकू पाठ्यक्रम) का वर्णन किया गया है, जिसमें दो परीक्षण ढांचे का उल्लेख है: यूनिटेस्ट और पाइटेस्ट। ये मूल बातें हैं, लेकिन विषय के अधिक विस्तृत विवरण के साथ अन्य स्रोत भी उपलब्ध कराए गए हैं। एकमात्र चीज जिसका उल्लेख नहीं किया गया है वह है नाक, लेकिन व्यवहार में पाइटेस्ट हाल के वर्षों में वास्तविक नेता रहा है। निर्भरता बाधाओं के मामले में, विकल्प स्पष्ट है: यूनिटटेस्ट। भविष्य के कोड समर्थन के लिए अधिक लचीला आधार बनाने और परीक्षण को सरल बनाने के लिए मिनी-रिफैक्टरिंग कोड का एक उदाहरण दिया गया है।
सातवें खंड में , हम मानक ट्रेस मॉड्यूल के साथ-साथ तीसरे पक्ष के कवरेज मॉड्यूल का उपयोग करके परीक्षण कवरेज के मुद्दे पर चर्चा करते हैं। लेकिन फिर भी तृतीय-पक्ष मॉड्यूल का उपयोग करने की अनुशंसा की जाती है, जिसे पायथन दुभाषिया के विभिन्न संस्करणों पर चलाया जा सकता है, और फिर नियम कवरेज रन → कवरेज कंबाइन → कवरेज रिपोर्ट का पालन करके कोड कवरेज पर एक संयुक्त रिपोर्ट प्राप्त कर सकते हैं। अंततः, हर किसी को किसी प्रोजेक्ट पर किसी बिंदु पर दुविधा का सामना करना पड़ता है: “परीक्षण करने के लिए, आपको कोड को दोबारा करने की आवश्यकता है; लेकिन परीक्षण के बिना रिफैक्टरिंग बहुत जोखिम भरा है"।
यहां, सबसे अधिक संभावना है, सब कुछ परियोजना, उसके दायरे, कोड की गुणवत्ता और परीक्षणों की उपलब्धता पर ही निर्भर करेगा। मुझे ऐसा लगता है कि आपको व्यावहारिक रास्ता अपनाना चाहिए, और आपको हमेशा 100% संदर्भ प्राप्त नहीं करना चाहिए, अक्सर इसकी आवश्यकता नहीं होती है। सबसे अधिक संभावना है, इसे पढ़ते समय, नॉक्स टूल का उपयोग करके पूरी कहानी को स्वचालित करने वाला अध्याय अभी तक तैयार नहीं था।
संक्षेप में बताने से पहले, आइए पिपएक्स इंस्टॉल करें और इसका उपयोग करने का प्रयास करें।
आधिकारिक वेबसाइट पर, टूल के डेवलपर्स इसे इस प्रकार रखते हैं:
“अवलोकन: पिपक्स क्या है?
पिपएक्स एक उपकरण है जो आपको पायथन में लिखे गए अंतिम-उपयोगकर्ता अनुप्रयोगों को स्थापित करने और चलाने में मदद करता है। यह मोटे तौर पर macOS के ब्रू, JavaScript के npx और Linux के apt के समान है।
इसका पिप से गहरा संबंध है। वास्तव में, यह पाइप का उपयोग करता है, लेकिन पायथन पैकेजों को स्थापित करने और प्रबंधित करने पर केंद्रित है जिन्हें सीधे कमांड लाइन से एप्लिकेशन के रूप में चलाया जा सकता है।
यदि पैकेज सीएलआई इंटरफ़ेस के साथ आता है तो यह बहुत अच्छी खबर है, क्योंकि प्री-इंस्टॉलेशन के बिना, एकल कमांड के साथ वांछित पैकेज को सीधे चलाना संभव होगा। NodeJS दुनिया की ओर से npx टूल को नमस्कार ;)
स्थानीय स्तर पर पिपक्स स्थापित करने के बाद, आइए 5 छोटे प्रोजेक्ट चलाएँ और देखें कि यह कितना तेज़ और आसान है।
कंसोल में, निम्न कमांड चलाएँ: $ pipx run google-speech -l en -o hello_world.mp3 "Hello, world!"
इस स्थिति में, फ़ाइल hello_world.mp3 उस निर्देशिका में बनाई जाती है जहां कमांड निष्पादित की गई थी, और इसे मीडिया प्लेयर के साथ सुना जा सकता है।
कंसोल में, निम्न कमांड चलाएँ: $ pipx run chksum-cli ./hello_world.mp3 b754e299a96327caaddd44b453f66ed9439c5d64d0d6e55c7e32471115757e5e sha256
परिणाम प्रदर्शित किया जाएगा कि फ़ाइलों के चेकसम मेल खाते हैं या नहीं।
कंसोल में, निम्न कमांड चलाएँ: $ pipx run httpy-cli mail.ru
हेडर और अनुरोध निकाय के साथ एक HTTP प्रतिक्रिया आउटपुट होगी।
कंसोल में, निम्न कमांड चलाएँ: $ pipx run timy-cli -с
एक एनालॉग घड़ी प्रदर्शित की जाएगी, जिसमें CTRL + C कुंजी संयोजन का उपयोग करके इसे रोकने की क्षमता होगी।
कंसोल में, निम्न कमांड चलाएँ: $ pipx run cli-chess
खेल के प्रकार का चयन करने के लिए एक मेनू प्रारंभ होगा:
अतिरिक्त विकल्प देखने के लिए, आप उपरोक्त आदेशों में --help कुंजी जोड़ सकते हैं।
कुल मिलाकर, किताब पढ़ने में आसान है, लेकिन कुछ जगहों पर थोड़ी भ्रमित करने वाली है। शायद इसमें कुछ गैर-तुच्छ उदाहरणों का अभाव है। पुस्तक विकिपीडिया से एक यादृच्छिक लेख को पुनः प्राप्त करने के लिए एक नमूना स्क्रिप्ट का वर्णन करती है।
मुझे क्या पसंद आया:
व्यक्तिगत रूप से, मैंने पिपक्स टूल (नोड.जेएस दुनिया में एनपीएक्स के अनुरूप) की खोज की, जो तब बहुत उपयोगी होता है जब आपको किसी चीज़ से तुरंत परिचित होने और उस पर नज़र डालने की आवश्यकता होती है। उन परियोजनाओं के लिए विशेष रूप से अच्छा है जहां चलाने के लिए सीएलआई इंटरफ़ेस है;
यह जानना दिलचस्प था कि कविता के विकल्प (https://python-poetry.org/) हैं, जैसे कि हैच (https://hatch.pypa.io/latest/) और माटुरिन (https://www. maturin.rs/);
पायथन दुभाषिया के विभिन्न संस्करणों के लिए बैकपोर्ट का उपयोग करने का उदाहरण; उदाहरण के लिए, Python3.8 के लिए आयातlib.metadata के विपरीत, आयातlib_metadata का उपयोग Python3.7 के लिए बैकपोर्ट के रूप में किया जाता है। पुस्तक से नमूना कोड:
try:
from importlib.metadata import metadata
except ImportError:
from importlib_metadata import metadata
मुझे लगता है कि पुस्तक में क्या गायब है:
चॉकलेटी (https://chocolatey.org/) जैसे ऑपरेटिंग सिस्टम के विंडोज परिवार पर पायथन को स्थापित करने के लिए पैकेज मैनेजर का उपयोग करने का विकल्प कवर नहीं किया गया है;
यूनिक्स वितरण के लिए स्रोत से पायथन बनाने का तरीका शामिल नहीं है;
डॉकर कंटेनर में पायथन को चलाने का कोई तरीका नहीं। अब कई बिल्ड हैं, अल्पाइन पर आधारित सबसे न्यूनतम से शुरू;
विंडोज़ में निष्पादन योग्य .exe फ़ाइल को चलाने के लिए प्रोजेक्ट लाने का तरीका नहीं माना गया (मेरे अभ्यास में ऐसा मामला था। हां, मैं मानता हूं कि यह एक बहुत ही विशिष्ट कार्य है, लेकिन फिर भी);
वैकल्पिक परियोजना वितरण का कोई उदाहरण नहीं, उदाहरण के लिए, setuptools और dh-virtualenv की मदद से *.deb पैकेज निर्माण के साथ डेबियन-जैसे वितरण के लिए उपयुक्त मानक पैकेज प्रबंधक का उपयोग करना);
पाइलिंट, फ्लेक8, आइसोर्ट, ब्लैक, मायपी, पाइराइट आदि जैसे लिंटर का वर्णन करने वाला कोई अध्याय नहीं।
लेकिन यह मेरी व्यक्तिपरक राय है, आप असहमत हो सकते हैं।
इस तथ्य के बावजूद कि पुस्तक अभी तक अपने अंतिम संस्करण (अप्रैल 2024 में रिलीज के लिए निर्धारित) में नहीं है, मैं पायथन में रुचि रखने वाले किसी भी व्यक्ति को इसकी अनुशंसा कर सकता हूं।
लेखक: डेनियल निकितिन, यूज़टेक में वरिष्ठ सॉफ्टवेयर डेवलपर