मुख्य सामग्री पर जाएं

IPython या Jupyter?

IPython और Jupyter के विकास और उनके बीच कुछ प्रमुख अंतरों पर चर्चा।
अपडेट किया गया 25 सित॰ 2026  · 15 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

इस लेख के लिए अपने सुझाव देने के लिए Brian Granger, Fernando Pérez और Robert Kern का हार्दिक धन्यवाद!

सीखने वालों के साथ-साथ अनुभवी डेटा वैज्ञानिकों के लिए भी Jupyter Notebook सबसे लोकप्रिय डेटा साइंस टूल्स में से एक है: यह इंटरएक्टिव वातावरण न सिर्फ सिखाने-सीखने और अपने काम को सहकर्मियों के साथ साझा करने के लिए आदर्श है, बल्कि पुनरुत्पादनीय (reproducible) शोध भी सुनिश्चित करता है। फिर भी, जब आप इस नोटबुक के साथ काम करना सीखते हैं, तो आपको अक्सर IPython से भी पाला पड़ता है।

कई मामलों में ये दोनों पर्यायवाची लगते हैं, और जब आप गहराई में जाना चाहते हैं तो यह खासी उलझन पैदा करता है: क्या मैजिक कमांड्स Jupyter का हिस्सा हैं या IPython का? नोटबुक को सेव और लोड करना IPython की सुविधा है या Jupyter की?

ऐसे सवाल आप शायद और भी पूछते चले जाएंगे।

आज की ब्लॉग पोस्ट का उद्देश्य दोनों के कुछ मूलभूत अंतरों को अधिक स्पष्ट रूप से दिखाना है—सिर्फ उनकी उत्पत्ति से शुरू करके यह बताने के लिए कि दोनों का आपस में क्या संबंध है, बल्कि कुछ विशिष्ट फीचर्स को भी कवर करना जो किसी एक का हिस्सा हैं—ताकि आपके लिए दोनों के बीच फर्क करना आसान हो जाए!

टिप्स और ट्रिक्स, सर्वोत्तम प्रथाएं, उदाहरण और बहुत कुछ जानने के लिए DataCamp की Definitive Guide to Jupyter Notebook भी देखें।

IPython / Jupyter की उत्पत्ति

Jupyter Notebook क्या है और यह IPython से कैसे अलग है, इसे पूरी तरह समझने के लिए पहले यह पढ़ना दिलचस्प होगा कि ये दोनों कम्प्यूटेशनल नोटबुक्स के इतिहास और भविष्य में कैसे फिट होते हैं।

कम्प्यूटेशनल नोटबुक्स की शुरुआत: MATLAB, Mathematica और Maple

80 के दशक के मध्य में, The MathWorks ने MATLAB जारी किया, जिसकी स्थापना Jack Little, Steve Bangert और Cleve Moler ने की थी।

अब 80 के दशक के अंत, सन् 1987 पर चलते हैं। Theodore Gray ने Mathematica नोटबुक फ्रंट-एंड पर काम शुरू किया और एक साल बाद इसे सार्वजनिक रूप से जारी किया गया। GUI ने ऐसे नोटबुक दस्तावेज़ों को इंटरएक्टिव रूप से बनाना और संपादित करना संभव बनाया जिनमें सुंदर-प्रिंटेड प्रोग्राम कोड, फॉर्मेट किया हुआ पाठ और अनेक सुविधाएँ थीं, जैसे टाइपसेट गणित, ग्राफिक्स, GUI कॉम्पोनेंट्स, टेबल्स और साउंड्स। मानक वर्ड प्रोसेसिंग क्षमताएँ भी थीं, जैसे रियल-टाइम बहुभाषी स्पेल चेकिंग। आप इन दस्तावेज़ों को प्रस्तुतियों के लिए स्लाइडशो वातावरण में आउटपुट कर सकते थे।

जब आप इन नोटबुक्स की संरचना देखते हैं, तो तुरंत ध्यान जाता है कि वे कोशिकाओं (cells) की पदानुक्रम पर निर्भर थीं, जो दस्तावेज़ों की रूपरेखा और अनुभागों के लिए सहायक थी—ठीक वैसा ही जैसा आप आज Jupyter नोटबुक्स में पाते हैं।

इसी अवधि में, 1989 में, Maple ने अपना पहला नोटबुक-शैली GUI पेश किया। यह Macintosh के लिए संस्करण 4.3 में शामिल था। 1990 में X11 और Windows के लिए नए इंटरफ़ेस भी आए। इन शुरुआती नोटबुक्स ने दूसरों को प्रेरित किया और बाद में जिन्‍हें “डेटा साइंस नोटबुक्स” कहा जाने लगा, उनकी नींव रखी।

डेटा साइंस नोटबुक्स का उदय

Maple और Mathematica नोटबुक्स के बाद कई कम्प्यूटेशनल नोटबुक्स बने। यह अनुभाग हालांकि उन नोटबुक्स पर केंद्रित है जिन्होंने डेटा साइंस नोटबुक्स के उभार में योगदान दिया। आप देखेंगे कि इनमें से कुछ आज भी नए और अनुभवी डेटा वैज्ञानिकों के बीच लोकप्रिय हैं।

Sage Notebook

ब्राउज़र-आधारित सिस्टम के रूप में Sage नोटबुक पहली बार 2000 के दशक के मध्य में जारी हुआ और 2007 में इसका एक नया, अधिक शक्तिशाली संस्करण आया जिसमें यूज़र अकाउंट्स थे और दस्तावेज़ों को सार्वजनिक करना संभव था। इसका लेआउट Google नोटबुक्स पर आधारित था, इसलिए UI डिजाइन Google Docs जैसा लगता था।

Sage नोटबुक्स के निर्माताओं ने बताया है कि वे Mathematica नोटबुक्स और Maple वर्कशीट्स के प्रबल उपयोगकर्ता थे। Sage नोटबुक्स के विकास के पीछे अन्य प्रेरक कारक थे: पहला, डेवलपर्स का IPython टीम के साथ निकट संपर्क था, क्योंकि Sage के टर्मिनल-आधारित संस्करण में IPython का उपयोग होता था। दूसरा, दो छात्रों द्वारा IPython के लिए GUI देने का “विफल प्रयास”, और तीसरा, “AJAX” (Asynchronous JavaScript And XML) वेब एप्लिकेशन्स का उभार, जिसमें यूज़र को हर क्रिया पर पूरा पेज रिफ्रेश नहीं करना पड़ता।

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

AJAX के अन्य उदाहरण हैं: Gmail, Google Maps, Facebook, Twitter,… जैसा कि आप देखते हैं, लगभग सब कुछ AJAX है।

IPython और Jupyter Notebook

2001 के अंत में, जब कि Guido van Rossum ने नीदरलैंड्स के National Research Institute for Mathematics and Computer Science में Python पर काम शुरू किए लगभग बीस साल हो चुके थे, Fernando Pérez ने IPython विकसित करना शुरू किया। यह प्रोजेक्ट Mathematica नोटबुक्स और Maple वर्कशीट्स से प्रभावित था, ठीक Sage नोटबुक और अन्य कई प्रोजेक्ट्स की तरह।

2005 में, Wx (ग्राफिकल यूज़र इंटरफेस बनाने के लिए एक विजेट टूलकिट और टूल्स लाइब्रेरी) के साथ एक नोटबुक सिस्टम बनाने का पहला प्रयास हुआ। Google Summer of Code के दो छात्रों ने Robert Kern और Fernando Pérez के निर्देशन में प्रोटोटाइप पर काम किया। बाद में Robert ने और काम किया। यह नोटबुक सिस्टम का प्रोटोटाइप कम और IPython के कोर कोड की सफाई अधिक था ताकि IPython शेल के लिए wxPython GUI फ्रंटएंड लिखना आसान हो। इन्हीं क्लीनअप्स ने एक साफ नोटबुक सिस्टम बनाने में मदद की और इनमें से कुछ हिस्से अंततः सफल नोटबुक प्रयास के शुरू होने पर IPython में हिस्सों के रूप में मिला दिए गए।

IPython के लिए दूसरा प्रोटोटाइप 2006 की गर्मियों में Min Ragan-Kelley ने Brian Granger के मार्गदर्शन में बनाया। यह वेब-आधारित था और SQL डेटाबेस बैकएंड था, पर उस समय की वेब तकनीकों के साथ इम्प्लिमेंटेशन बहुत जटिल साबित होने के कारण काम बंद कर दिया गया।

IPython नोटबुक का तीसरा प्रोटोटाइप अक्टूबर 2010 में कुछ दिनों के हैक के रूप में किसी थर्ड पार्टी ने किया। अंततः, 2011 की वसंत-गर्मी तक, Brian Granger 2010 में किए अपने काम के आधार पर वेब नोटबुक के प्रोटोटाइप पर पूरा समय दे रहे थे, जिसमें उन्होंने Fernando Pérez के साथ IPython कर्नेल आर्किटेक्चर और मैसेज स्पेसिफिकेशन, और Min Ragan Kelley के साथ PyZMQ बनाया था।

PyZMQ ZeroMQ के लिए Python बाइंडिंग्स देने वाली लाइब्रेरी है; IPython की parallel computing सुविधाओं, qt कंसोल और नोटबुक के लिए इसकी जरूरत थी।

PyZMQ और वेबसॉकेट्स वे मुख्य तकनीकें थीं, जिन्होंने नोटबुक को संभव बनाया। उसी साल की शरद तक अन्य योगदानकर्ता (जैसे Matthias Bussonnier, Min और Fernando) भी इसमें योगदान दे रहे थे। 21 दिसंबर, 2011 तक, IPython Notebook (0.12) का पहला संस्करण जारी हो गया।

अगले वर्षों में टीम को कई पुरस्कार मिले, जैसे 23 मार्च 2013 को Fernando Pérez के लिए Advancement of Free Software और Jolt Productivity Award, और Alfred P. Sloan Foundations से फंडिंग, आदि।

आखिरकार, 2014 में, Project Jupyter IPython से अलग हुआ।

विभाजन से पहले जारी IPython में इंटरएक्टिव शेल, नोटबुक सर्वर, Qt कंसोल, आदि सब एक ही रेपॉज़िटरी में थे। प्रोजेक्ट बड़ा हो चुका था, और इसके घटक अलग-अलग प्रोजेक्ट्स की तरह होते जा रहे थे जो संयोग से एक ही प्रोजेक्ट से संबंधित थे।

लेकिन ध्यान दें, प्रोजेक्ट का आकार ही Project Jupyter शुरू होने का एकमात्र कारण नहीं था: 2011 से 2014 के बीच, IPython नोटबुक ने अन्य प्रोग्रामिंग भाषाओं के साथ काम करना शुरू कर दिया था। सबसे पहले Julia, फिर R। यह तथ्य कि IPython नोटबुक, जिसका नाम संकेत देता था कि नोटबुक केवल Python-आधारित है, Julia और R जैसी अन्य भाषाओं के कर्नेल के साथ भी काम कर रही थी, लोगों को उलझन में डालता था।

जब अन्य भाषाएँ भी शामिल थीं तो नाम “IPython” क्यों?

“Jupyter” नाम विज्ञान की अग्रणी ओपन भाषाओं (Julia, Python और R) के बारे में सोचकर प्रेरित हुआ, और भले ही यह किसी संक्षेपाक्षर जैसा लगे, इसका मतलब कभी यह नहीं था कि अन्य भाषाएँ स्वागत योग्य नहीं हैं। बल्कि, यह नाम उस प्रोजेक्ट का बेहतर प्रतिनिधित्व करता था जिस पर डेवलपर्स काम कर रहे थे और प्रोजेक्ट की वैज्ञानिक जड़ों की ओर संकेत करता था!

Project Jupyter शुरू होने के बाद, IPython प्रोजेक्ट के भाषा-निर्पेक्ष हिस्से, जैसे नोटबुक फ़ॉर्मेट, मैसेज प्रोटोकॉल, Qt कंसोल, नोटबुक वेब एप्लिकेशन, आदि को Jupyter प्रोजेक्ट में रखा गया। मुख्य Jupyter GitHub संगठन आपको यहाँ मिलेगा।

Jupyter और IPython समुदायों में इसे “The Big Split” कहा जाता है।

अब IPython के केवल दो रोल हैं: Jupyter Notebook के लिए Python बैकएंड होना, जिसे कर्नेल भी कहते हैं, और एक इंटरएक्टिव Python शेल। पर बस इतना ही नहीं: IPython इकोसिस्टम में आपको एक parallel computing फ्रेमवर्क भी मिलेगा। इसके बारे में आप आगे पढ़ेंगे!

और IPython की तरह, Project Jupyter भी असल में कई प्रोजेक्ट्स का नाम है: इसकी तीन एप्लिकेशन हैं—खुद Notebook, एक Console और एक Qt कंसोल—साथ ही उप-प्रोजेक्ट्स जैसे डिप्लॉयमेंट के लिए JupyterHub, शिक्षा के लिए nbgrader, आदि। Jupyter आर्किटेक्चर का एक अवलोकन आप यहाँ देख सकते हैं।

ध्यान दें कि यही विकास वह वजह है जो IPython और Jupyter को लेकर कई Pythonistas की उलझन समझाता है: चूंकि एक दूसरे से निकला (और वो भी हाल ही में), कुछ लोग अभी भी सही नाम अपनाने में कठिनाई महसूस करते हैं। और शायद इससे भी जटिल कारक है विकास प्रक्रिया: क्योंकि एक दूसरे से निकला, IPython और Jupyter Notebook की सुविधाओं के बीच काफी ओवरलैप है, जिन्हें कभी-कभी अलग करना कठिन होता है! दोनों के बीच कैसे फर्क किया जाए, यह इस पोस्ट के अगले हिस्सों में स्पष्ट होगा। यदि आप IPython के विकास के बारे में और विवरण जानना चाहते हैं, तो Fernando Pérez और William Stein के निजी लेख पढ़ें, जिनमें उनके नोटबुक्स का इतिहास है।

R नोटबुक्स

R Markdown और Jupyter Notebook दोनों में पुनरुत्पादनीय वर्कफ़्लो देना, एक ही दस्तावेज़ में कोड, आउटपुट और टेक्स्ट को बुनना, इंटरएक्टिव विजेट्स को सपोर्ट करना और कई फ़ॉर्मैट्स में आउटपुट देना—ये समानताएँ हैं।

हालाँकि, दोनों अलग भी हैं: R Markdown का फोकस पुनरुत्पादनीय बैच एक्ज़िक्यूशन, प्लेन-टेक्स्ट प्रतिनिधित्व, वर्ज़न कंट्रोल, प्रोडक्शन आउटपुट और वही एडिटर/टूल्स पर है जो आप R स्क्रिप्ट्स के लिए इस्तेमाल करते हैं। दूसरी ओर, Jupyter का फोकस कोड के साथ इनलाइन आउटपुट देना, सेशन्स में आउटपुट कैश करना, कोड और आउटपुट को एक ही फ़ाइल में साझा करना है। नोटबुक्स इंटरएक्टिव एक्ज़िक्यूशन मॉडल पर ज़ोर देती हैं। वे प्लेन-टेक्स्ट का नहीं, बल्कि JSON जैसी स्ट्रक्चर्ड डेटा रिप्रज़ेंटेशन का उपयोग करती हैं।

यही RStudio की नोटबुक एप्लिकेशन का उद्देश्य समझाता है: यह R Markdown के सभी फायदों को कम्प्यूटेशनल नोटबुक्स के अच्छे पहलुओं के साथ जोड़ती है।

R नोटबुक्स के साथ कैसे काम करें और Jupyter तथा R Markdown नोटबुक्स के बीच नोटबुक शेयरिंग, प्रोजेक्ट मैनेजमेंट, वर्ज़न कंट्रोल और अन्य बातों में सटीक अंतर क्या हैं, यह जानने के लिए DataCamp की पोस्ट Jupyter and R: Notebooks with R देखें।

अन्य डेटा साइंस नोटबुक्स

बेशक, डेटा साइंस में उतरते समय आप और भी नोटबुक्स पर विचार कर सकते हैं। हाल के वर्षों में कई नए विकल्प डेटा वैज्ञानिकों और डेटा साइंस उत्साहियों तक पहुँचे हैं: Beaker Notebook, Apache Zeppelin, Spark Notebook, DataBricks Cloud आदि; साथ ही Rodeo IDE या nteract जैसे टूल्स जो आपकी डेटा साइंस विश्लेषणों को इंटरएक्टिव और पुनरुत्पादनीय बनाते हैं। यहाँ यह नोट करना अच्छा है कि nteract अन्य टूल्स से इसलिए अलग है क्योंकि यह Jupyter आर्किटेक्चर, जैसे प्रोटोकॉल्स और फ़ॉर्मैट्स, का उपयोग करता है।

नोटबुक्स का भविष्य

और लगता है कि नोटबुक्स अब स्थायी हैं। हाल ही में, Jupyter Notebook की अगली पीढ़ी—JupyterLab—समुदाय के सामने पेश की गई है। Notebook एप्लिकेशन में अब सिर्फ नोटबुक्स का सपोर्ट नहीं, बल्कि एक फ़ाइल मैनेजर, टेक्स्ट एडिटर, टर्मिनल एमुलेटर, चल रहे Jupyter प्रॉसेसेज़ का मॉनिटर, IPython क्लस्टर मैनेजर और मदद दिखाने के लिए पेजर भी शामिल है।

आप सोच सकते हैं कि इसमें नया क्या है; Jupyter Notebook में भी ये सब हैं। पर JupyterLab आपको इंटरएक्टिव कम्प्यूटिंग के इन सभी बिल्डिंग ब्लॉक्स का नए तरीकों से उपयोग करने में सक्षम बनाता है।

इसके बारे में और पढ़ें यहाँ।

Jupyter Notebook का समृद्ध टूलसेट स्वाभाविक रूप से विकसित हुआ है और हमारे उपयोगकर्ताओं और डेवलपर्स की जरूरतों से प्रेरित रहा है। JupyterLab सभी इन टूल्स को सपोर्ट करने के लिए अगली पीढ़ी की आर्किटेक्चर है, जिसमें लचीला और उत्तरदायी UI है, जो यूज़र-नियंत्रित लेआउट देता है जो टूल्स को एक साथ जोड़ सकता है।

IPython या Jupyter?

प्रोजेक्ट का विकास और उसके परिणामस्वरूप हुआ “Big Split”—ये दोनों के वास्तविक अंतर समझने की नींव हैं। लेकिन, चूंकि दोनों मूलतः जुड़े हुए हैं, आप कभी-कभी दुविधा में पड़ सकते हैं कि क्या किसका हिस्सा है।

अगला अनुभाग उन फीचर्स पर जाएगा जो या तो IPython इकोसिस्टम का हिस्सा हैं या Jupyter प्रोजेक्ट के।

सही उत्तर चुनना और हर फीचर के बारे में और जानना अब आपके ऊपर है!

कर्नेल्स?

भले ही आज कर्नेल्स Jupyter Notebook एप्लिकेशन में प्रमुखता से दिखते हैं, सबसे पहले जिसने एक पूर्ण कर्नेल और प्रोटोकॉल का उपयोग किया था, वह Qt कंसोल था, जो Notebook से पहले विकसित हुआ। आज, इतिहास और आर्किटेक्चर—दोनों दृष्टियों से—Notebook कर्नेल्स का लचीलेपन से उपयोग करता है, और ये Jupyter की सुविधा हैं, न कि सिर्फ Notebook की। मतलब, कर्नेल्स सिर्फ एक फीचर भर नहीं हैं: वे Jupyter आर्किटेक्चर का मुख्य एब्स्ट्रैक्शन हैं, और नॉन-नोटबुक टूल्स—जैसे टेक्स्ट कंसोल, Qt कंसोल, O’Reilly का Thebe, Kernel Gateway टूल, nteract का hydrogen एडिटर—द्वारा भी उपयोग किए जाते हैं। अंत में, JupyterLab में, कर्नेल्स को नोटबुक से लेकर वेब कंसोल या यहाँ तक कि किसी टेक्स्ट फ़ाइल तक—हर चीज़ से जोड़ा जा सकता है।

कर्नेल वह प्रोग्राम है जो यूज़र के कोड को चलाता है और उसका निरीक्षण करता है: यह कम्प्यूटेशन और फ्रंटएंड इंटरफेस—जैसे नोटबुक्स—के साथ संचार प्रदान करता है। Jupyter Notebook एप्लिकेशन में तीन मुख्य कर्नेल हैं: IPython, IRkernel और IJulia।

चूंकि “Jupyter” नाम विज्ञान की अग्रणी ओपन भाषाओं (Julia, Python और R) से प्रेरित था, यह कोई चौंकाने वाली बात नहीं। प्रोजेक्ट के विकास के परिणामस्वरूप IPython कर्नेल Jupyter टीम द्वारा मेंटेन किया जाता है।

हालाँकि, आप Jupyter Notebook एप्लिकेशन में कई अन्य भाषाएँ भी चला सकते हैं, जैसे Scala, JavaScript, Haskell, Ruby, आदि। ये समुदाय-रक्षित कर्नेल्स हैं।

नोटबुक डिप्लॉयमेंट?

नोटबुक्स को डिप्लॉय करना वह चीज़ है जिसे आप आमतौर पर Jupyter नोटबुक्स के साथ काम करते समय पाते हैं या देखते हैं। कई पैकेज हैं जो आपकी नोटबुक्स को डिप्लॉय करने में मदद करेंगे और जो Jupyter इकोसिस्टम का हिस्सा हैं।

इनमें से कुछ हैं:

  • docker-stacks तब काम आएगा जब आपको Docker कंटेनर्स के रूप में Jupyter एप्लिकेशन्स और कर्नेल्स के स्टैक्स चाहिए हों।
  • ipywidgets Jupyter आर्किटेक्चर के लिए इंटरएक्टिव HTML और JavaScript विजेट्स (जैसे स्लाइडर्स, चेकबॉक्स, टेक्स्ट बॉक्स, चार्ट्स, आदि) देता है जो फ्रंटएंड कंट्रोल्स को Jupyter कर्नेल से जोड़ते हैं।
  • jupyter-drive IPython को फ़ाइल प्रबंधन के लिए Google Drive का उपयोग करने देता है।
  • jupyter-sphinx-theme से अपनी नोटबुक में Jupyter Sphinx थीम जोड़ें। इससे बुद्धिमान और सुंदर डाक्यूमेंटेशन बनाना आसान होगा।
  • kernel_gateway एक वेब सर्वर है जो Jupyter कर्नेल्स को स्पॉन करने और उनसे संवाद करने के अलग-अलग तरीके सपोर्ट करता है। यह पैकेज किन उपयोग मामलों में काम आता है, देखने के लिए यहाँ देखें।
  • nbviewer अपनी नोटबुक्स साझा करने के लिए। गैलरी यहाँ देखें।
  • tmpnb से Docker कंटेनर्स का उपयोग करते हुए अस्थायी Jupyter Notebook सर्वर बनाएं। खुद आज़माएँ यहाँ।
  • traitlets एक फ्रेमवर्क है जो Python क्लासेस को टाइप-चेकिंग, डायनामिक डिफॉल्ट वैल्यूज़ और ‘on change’ कॉलबैक वाले एट्रिब्यूट्स रखने देता है। आप इसे कॉन्फ़िगरेशन के लिए भी इस्तेमाल कर सकते हैं—फाइलों या कमांड लाइन आर्गुमेंट्स से वैल्यू लोड करने के लिए। traitlets, IPython और Jupyter के कॉन्फ़िगरेशन सिस्टम और IPython इंटरएक्टिव विजेट्स के डिक्लेयरेटिव API को पावर देता है।

सिस्टम शेल का उपयोग?

शेल एस्केप की मदद से IPython को सिस्टम शेल उपयोग के लिए अनुकूलित करना संभव है: जो पंक्तियाँ ! से शुरू होती हैं, वे सीधे सिस्टम शेल को भेज दी जाती हैं। उदाहरण के लिए, !ls मौजूदा डायरेक्टरी में ls चलाएगा। आप myfiles=!ls सिंटैक्स के साथ किसी सिस्टम कमांड का परिणाम एक Python वेरिएबल को असाइन कर सकते हैं। हालाँकि, अगर आप ls का परिणाम स्ट्रिंग्स की सूची के रूप में स्पष्ट रूप से प्रिंट कराना चाहते हैं, बिना किसी वेरिएबल को असाइन किए, तो दो विस्मयादिबोधक चिह्न (!!ls) या बिना असाइनमेंट के %sx मैजिक कमांड का उपयोग करें।

# Assign the result to `ls`
ls = !ls
 
# Explicit `ls`
!!ls
 
# Or with magics
%sx
 
# Assign magics result
ls = %sx

ध्यान दें कि !! कमांड्स को किसी वेरिएबल को असाइन नहीं किया जा सकता, लेकिन किसी मैजिक का परिणाम (जब तक वह कोई वैल्यू लौटाता है) वेरिएबल को असाइन किया जा सकता है।

IPython आपको सिस्टम कॉल्स करते समय Python वेरिएबल्स के मानों का विस्तार करने की सुविधा भी देता है: बस अपने वेरिएबल्स या एक्सप्रेशन्स को आकृतियों ({}) में लपेटें। साथ ही, ! या !! वाले शेल कमांड में, $ से प्रीफ़िक्स किए गए किसी भी Python वेरिएबल का विस्तार किया जाता है। नीचे दिए कोड खंड में, आप देखेंगे कि आप sys वेरिएबल के argv एट्रिब्यूट को echo करते हैं। ध्यान दें कि आप सिस्टम आउटपुट से Python वेरिएबल्स में वैल्यू लेने के लिए $/$$ सिंटैक्स का भी उपयोग कर सकते हैं, जिन्हें आप आगे की स्क्रिप्टिंग में इस्तेमाल कर सकते हैं।

शेल को एक literal $ पास करने के लिए, डबल $$ का उपयोग करें। आपको यह literal $ तब चाहिए जब आप शेल और वातावरण वेरिएबल्स जैसे $PATH तक पहुंचना चाहते हैं:

# Import and initialize
import math
x = 4
 
# System call with variable
!echo {math.factorial(x)}
 
# Expand a variable
!echo $sys.argv
 
# Use $$ for a literal $
!echo "A system variable: $$HOME"

और पढ़ें यहाँ।

ध्यान दें कि IPython के अलावा, अन्य कर्नेल्स में भी विशेष सिंटैक्स होते हैं जो यह सुनिश्चित करते हैं कि पंक्तियाँ शेल कमांड्स के रूप में निष्पादित हों! ये सख्त अर्थ में “मैजिक” नहीं हैं क्योंकि वे इसे किसी भी नाम से लागू कर सकते हैं और यह IPython मैजिक्स की तुलना में पूरी तरह अलग (और कम या ज्यादा समृद्ध) हो सकता है।

साथ ही, ऐसे aliases भी होते हैं जिन्हें आप सिस्टम कमांड्स के लिए परिभाषित कर सकते हैं। ये एलियास मूलतः bash कमांड्स के शॉर्टकट होते हैं। एक एलियास एक टपल होता है: (“showTheDirectory”, “ls”)। अधिक जानकारी के लिए %alias? चलाएँ!

टिप: अपने पूरे $PATH को IPython एलियास के रूप में लोड करने के लिए %rehashx का उपयोग करें।

मैजिक्स?

यदि आपने DataCamp की Definitive Guide to Jupyter Notebook पढ़ी है या पहले से Jupyter के साथ काम किया है, तो आप तथाकथित “मैजिक कमांड्स” के बारे में जानते होंगे। मैजिक्स आमतौर पर ऐसे सिंटैक्स तत्व और एक कमांड-नुमा शब्द से मिलकर बनते हैं, जो अंतर्निहित भाषा में वैध नहीं होता। भीतर से, मैजिक फ़ंक्शंस वास्तव में Python फ़ंक्शंस ही होती हैं।

जैसा कि आप जानते होंगे, IPython कर्नेल % सिंटैक्स तत्व का उपयोग करता है क्योंकि यह Python में वैध यूनरी ऑपरेटर नहीं है। हालांकि, जो पंक्तियाँ %% से शुरू होती हैं, वे सेल मैजिक का संकेत देती हैं: वे तर्क के रूप में न केवल मौजूदा पंक्ति के शेष हिस्से को लेती हैं, बल्कि वर्तमान एक्ज़िक्यूशन ब्लॉक में नीचे की सभी पंक्तियों को भी। सेल मैजिक्स प्राप्त इनपुट में मनमाने संशोधन कर सकते हैं, जो जरूरी नहीं कि वैध Python कोड हों। वे पूरे ब्लॉक को एक सिंगल स्ट्रिंग के रूप में प्राप्त करते हैं।

मैजिक्स कर्नेल-विशिष्ट होती हैं और कर्नेल्स द्वारा उपलब्ध कराई जाती हैं, और इन्हें Jupyter Notebook में आपका काम और अनुभव अधिक इंटरएक्टिव बनाने के लिए डिज़ाइन किया गया है। किसी कर्नेल में मैजिक कमांड्स उपलब्ध हैं या नहीं, यह कर्नेल डेवलपर्स और हर कर्नेल पर निर्भर करता है। आप समझ ही गए होंगे: मैजिक्स कर्नेल फीचर हैं।

जब आप Jupyter Notebook के Python बैकएंड—IPython—का, जिसे कर्नेल भी कहा जाता है, उपयोग कर रहे होते हैं, तो आप कुछ ट्रिक्स का इस्तेमाल करना चाहेंगे जिनसे ऐसी सुविधाओं तक पहुँचा जा सके जो आपके प्रोग्रामिंग को तेज, आसान और अधिक इंटरएक्टिव बनाती हैं। ध्यान दें कि नीचे सूचीबद्ध चीजें संपूर्ण नहीं हैं। पूरा अवलोकन पाने के लिए इन बिल्ट-इन मैजिक कमांड्स की सूची देखें।

प्लॉटिंग

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

डिफ़ॉल्ट रूप से आपका प्लॉट एक अलग विंडो में दिखाई देगा। इसके अलावा, आप inline या qt जैसे बैकएंड भी निर्दिष्ट कर सकते हैं, जिससे प्लॉटिंग कमांड्स का आउटपुट इनलाइन या किसी अलग GUI बैकएंड के जरिए दिखेगा। इसके बारे में और पढ़ें यहाँ।

फ़ाइल सिस्टम नेविगेशन

कर्नेल के मैजिक कमांड्स आपके फ़ाइल सिस्टम के अंदर नेविगेट करने का तरीका भी देते हैं। %cd और %bookmark मैजिक्स का उपयोग या तो डायरेक्टरी बदलने के लिए या अक्सर इस्तेमाल की जाने वाली डायरेक्टरियों के लिए बुकमार्क बनाने में किया जा सकता है।

डिबगर एक्सेस

इसके बाद, आप हर बार किसी अनकॉट एक्सेप्शन पर Python डिबगर %pdb को बुलाने के लिए मैजिक्स का उपयोग कर सकते हैं। यह आपको कोड के उस हिस्से से गुजारेगा जिसने एक्सेप्शन ट्रिगर किया था, जिससे बग का स्रोत तेजी से ढूँढना संभव होगा।

आप %run मैजिक कमांड को -d विकल्प के साथ उपयोग कर सकते हैं ताकि स्क्रिप्ट्स Python डिबगर के नियंत्रण में चलें। यह आपके लिए स्वतः ही आरंभिक ब्रेकप्वाइंट्स सेट कर देगा। अंत में, आप और भी आसान डिबगर एक्सेस के लिए %debug मैजिक का उपयोग कर सकते हैं।

IPython एक्सटेंशन्स

आप %load_ext मैजिक का उपयोग करके किसी IPython एक्सटेंशन को उसके मॉड्यूल नाम से लोड कर सकते हैं। IPython एक्सटेंशन्स ऐसे Python मॉड्यूल हैं जो शेल के व्यवहार को संशोधित करते हैं: एक्सटेंशन्स मैजिक्स दर्ज कर सकते हैं, वेरिएबल्स परिभाषित कर सकते हैं, और सामान्य तौर पर यूज़र नेमस्पेस को संशोधित कर सकते हैं ताकि कोड सेल्स में उपयोग के लिए नई सुविधाएँ प्रदान की जा सकें। कुछ उदाहरण:

  • %load_ext oct2py.ipython का उपयोग करके Python से बिना किसी रुकावट के M-फाइल्स और Octave फ़ंक्शंस कॉल करें,
  • %load_ext rpy2.ipython का उपयोग करके Python प्रोसेस में एम्बेडेड चल रहे R के इंटरफ़ेस का उपयोग करें,
  • %load_ext Cython का उपयोग करके Python-से-C कम्पाइलर का उपयोग करें,
  • sympy.init_printing() का उपयोग करके Sympy Basic ऑब्जेक्ट्स का सुंदर प्रिंट ऑटोमैटिक रूप से करें, और
  • Fortran को अपने इंटरएक्टिव सेशन में उपयोग करने के लिए %load_ext fortranmagic का उपयोग करें।

… और भी बहुत कुछ! आप अपनी खुद की IPython एक्सटेंशन्स बना और रजिस्टर कर सकते हैं तथा उन्हें PyPi पर दर्ज कर सकते हैं: इसका मतलब यह भी है कि वहाँ और भी कई यूज़र-परिभाषित एक्सटेंशन्स और मैजिक्स मौजूद हैं! एक उदाहरण है ipython_unittest, और यह Extensions Index भी देखें।

एक और एक्सटेंशन जिस पर आपको नज़र रखनी चाहिए, वह है sparkmagic—Livy (Spark REST सर्वर) के ज़रिए रिमोट Spark क्लस्टर्स के साथ इंटरएक्टिव रूप से काम करने के लिए टूल्स का सेट—Jupyter नोटबुक्स में। sparkmagic लाइब्रेरी %%spark मैजिक देती है, जिससे आप एक सामान्य IPython नोटबुक से ही रिमोट Spark क्लस्टर के खिलाफ आसानी से कोड चला सकते हैं।

# Load in sparkmagic
%load_ext sparkmagic.magics
 
# Set the endpoint
%manage_spark
 
# Ask for help
%spark?

Spark क्लस्टर के साथ इंटरएक्टिव रूप से काम करने के लिए इन मैजिक्स का उपयोग कैसे करें, इसके और उदाहरणों के लिए यहाँ जाएँ।

ध्यान दें कि IPython में %load_ext के अलावा दो और मैजिक्स हैं जो आपको अपनी Jupyter Notebook के भीतर से एक्सटेंशन्स मैनेज करने देते हैं: %reload_ext और %unload_ext, क्रमशः किसी एक्सटेंशन को अनलोड करके दोबारा इम्पोर्ट और लोड करने तथा एक्सटेंशन को अनलोड करने के लिए।

अलग कर्नेल्स, अन्य मैजिक्स

हालाँकि, अन्य भाषाओं में, मैजिक कमांड्स का सिंटैक्स एलिमेंट अर्थपूर्ण हो सकता है। R कर्नेल, IRKernel, में मैजिक्स सिस्टम नहीं है। bash कमांड्स चलाने के लिए, उदाहरण के लिए, आप system() जैसी R फ़ंक्शंस का उपयोग करेंगे ताकि OS कमांड इनवोक किया जा सके। एक उदाहरण होगा system("head -5 *.csv", intern=TRUE)। ध्यान दें कि intern आर्गुमेंट शामिल करके, आप बताते हैं कि आप कमांड के आउटपुट को R में करैक्टर वेक्टर के रूप में कैप्चर करना चाहते हैं। Markdown इनपुट को डिस्प्ले करने के लिए आप display_markdown() का उपयोग करते हैं, जिसमें Markdown कोड एक करैक्टर वेक्टर के रूप में पास करते हैं। इसी तरह, Julia कर्नेल IJulia “मैजिक्स” का उपयोग नहीं करता। इसके बजाय, वही लक्ष्य हासिल करने के लिए अन्य सिंटैक्स Julia में अधिक स्वाभाविक हैं, IJulia कोड सेल्स के बाहर के वातावरण में भी काम करते हैं, और अक्सर अधिक शक्तिशाली होते हैं। हालांकि, IJulia कर्नेल के डेवलपर्स ने यह सुनिश्चित किया है कि जब भी आप IJulia कोड सेल में कोई IPython मैजिक कमांड डालते हैं, तो आपको मदद के साथ एक प्रिंटआउट दिखेगा जो बताएगा कि Julia में वही असर कैसे पाया जा सकता है (यदि संभव हो)।

उदाहरण के लिए, IJulia में IPython के %load का समकक्ष IJulia.load() है।

दूसरी ओर, ऐसे कर्नेल्स भी हैं जैसे Scala कर्नेल IScala, जो IPython की तरह ही मैजिक कमांड्स सपोर्ट करते हैं। हालाँकि, मैजिक्स का सेट अलग होता है क्योंकि उसे Scala और JVM की विशेषताओं से मेल खाना होता है। मैजिक कमांड्स प्रतिशत चिह्न % से, इसके बाद एक पहचानकर्ता और वैकल्पिक इनपुट से मिलकर बनते हैं। कुछ उल्लेखनीय मैजिक्स हैं:

# Type Information
%type 1
 
# Library Management
%libraryDependencies
%update

जैसा कि आपने ऊपर पढ़ा, sparkmagic लाइब्रेरी Scala और Python कर्नेल्स का एक सेट भी देती है जो आपको रिमोट Spark क्लस्टर से स्वतः कनेक्ट करने, कोड और SQL क्वेरी चलाने, अपने Livy सर्वर और Spark जॉब कॉन्फ़िगरेशन को मैनेज करने, और ऑटोमैटिक विज़ुअलाइज़ेशन जनरेट करने देती है—और वो भी बिना किसी कोड के!

उदाहरण के लिए, आप %%sql से आसानी से SparkSQL क्वेरी चला सकते हैं या %%info मैजिक से Spark एप्लिकेशन की जानकारी और लॉग्स तक पहुँच सकते हैं।

यदि आप किसी अन्य कर्नेल के साथ काम कर रहे हैं और सोचते हैं कि क्या आप मैजिक कमांड्स का उपयोग कर सकते हैं, तो यह जानना मददगार हो सकता है कि कुछ कर्नेल्स metakernel प्रोजेक्ट पर आधारित होते हैं और, अधिकतर मामलों में, वही मैजिक्स उपयोग करते हैं जो आप IPython कर्नेल में भी पाते हैं। metakernel मैजिक्स की सूची आपको यहाँ मिलेगी। metakernel एक Jupyter/IPython कर्नेल टेम्पलेट है जिसमें कोर मैजिक फ़ंक्शंस शामिल हैं।

कुछ उदाहरण:

इसका मतलब यह है कि, उदाहरण के लिए, जब आप MATLAB कर्नेल का उपयोग करते हैं, तो आपके पास निम्न मैजिक्स उपलब्ध होंगे:

Available line magics:
%cd  %connect_info  %download  %edit  %get  %help  %html  %install  %install_magic  %javascript  %kernel  %kx  %latex  %load  %ls  %lsmagic  %magic  %parallel  %plot  %pmap  %px  %python  %reload_magics  %restart  %run  %set  %shell  %spell
 
Available cell magics:
%%debug  %%file  %%help  %%html  %%javascript  %%kx  %%latex  %%processing  %%px  %%python  %%shell  %%show  %%spell

अगर आप ऊपर छपा खंड देखें, तो पाएंगे कि इनमें से कुछ मैजिक कमांड्स बहुत परिचित लगते हैं। जो मैजिक्स को अच्छी तरह नहीं जानते, वे ऊपर दिए खंड की तुलना IPython कर्नेल में डिफ़ॉल्ट रूप से उपलब्ध मैजिक्स से करें, तो कुछ मैजिक्स समान मिलेंगी:

Available line magics:
%alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode
 
Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

मूलत:, आप एक सवाल से तय कर सकते हैं कि कौन-सी मैजिक्स IPython-विशेष हैं और कौन-सी अन्य कर्नेल्स में भी उपयोग हो सकती हैं: क्या यह फ़ंक्शनालिटी Python-विशेष है या यह कोई सामान्य चीज़ है जो उस भाषा में भी काम करेगी, जिसमें आप काम कर रहे हैं?

उदाहरण के लिए, %pdb यानी Python Debugger या %matplotlib Python-विशेष हैं, जिनका JavaScript कर्नेल के साथ कोई मतलब नहीं बनता। जबकि %cd से डायरेक्टरी बदलना आम तौर पर बहुत सामान्य चीज़ है और किसी भी भाषा में काम करना चाहिए, क्योंकि यह इतना “जनरल” कमांड है। इसलिए, इसके अन्य कर्नेल्स में उपलब्ध होने की सम्भावना है। बेशक, आपको फिर भी यह जानना होगा कि आपका कर्नेल मैजिक्स का उपयोग करता है या नहीं।

कन्वर्ज़न और फ़ॉर्मैटिंग नोटबुक्स?

नोटबुक्स को कन्वर्ट और फ़ॉर्मैट करना Jupyter इकोसिस्टम में मिलने वाली सुविधाएँ हैं। इन कार्यों के लिए आप आमतौर पर दो टूल्स पाएँगे: nbconvert और nbformat।

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

दूसरे में मूलतः Jupyter Notebook का फ़ॉर्मैट होता है और यही समझने की कुंजी है कि नोटबुक फाइलें साधारण JSON दस्तावेज़ होते हैं जिनमें होता है: मेटाडेटा (जैसे कर्नेल या भाषा की जानकारी), नोटबुक फ़ॉर्मैट का संस्करण (मेजर और माइनर), और सेल्स जिनमें सारा टेक्स्ट, कोड आदि संग्रहित होता है।

नोटबुक्स को सेव और लोड करना?

नोटबुक्स को सेव और लोड करना Jupyter Notebook एप्लिकेशन की सुविधा है। आप .ipynb फ़ाइल एक्सटेंशन वाली नोटबुक्स, जिन्हें दूसरों ने बनाया है, डाउनलोड करके और Jupyter एप्लिकेशन में खोलकर लोड कर सकते हैं। अधिक सटीक रूप से, आप नई नोटबुक बनाते हैं और फिर “File” टैब पर क्लिक करके, “Open” पर क्लिक करके और अपनी डाउनलोड की हुई नोटबुक चुनकर फ़ाइल खोलना चुन सकते हैं।

उलटे, आप अपनी खुद की नोटबुक्स को भी उसी “File” टैब पर क्लिक करके और “Download as” चुनकर अपनी नोटबुक फ़ाइल प्राप्त कर सकते हैं, या फ़ाइल को सेव कर के एक चेकपॉइंट सेट करना चुन सकते हैं। यह तब बहुत काम का होता है जब आप थोड़ा-बहुत वर्ज़न कंट्रोल करना चाहते हैं और शायद अपनी नोटबुक के किसी पुराने संस्करण पर लौटना चाहते हैं। बेशक, आपके संशोधन कुछ मिनटों में स्वतः सेव होते रहते हैं, इसलिए हर बार यह क्रिया स्पष्ट रूप से करने की ज़रूरत नहीं।

ध्यान दें कि आप किसी मूल नोटबुक में कोई बदलाव सेव न करने का विकल्प भी चुन सकते हैं—उसकी एक कॉपी बनाकर और सारे बदलाव उसी कॉपी में सेव करके!

कीबोर्ड शॉर्टकट्स और मल्टीकर्सर सपोर्ट?

कई सेल्स का चयन करना, सेल आउटपुट टॉगल करना, नई सेल्स डालना, आदि—इन सभी कार्रवाइयों के लिए Jupyter Notebook में कीबोर्ड शॉर्टकट्स होते हैं। शीर्ष मेन्यू में सूची मिल जाएगी: “Help” टैब पर जाएँ और “Keyboard Shortcuts” चुनें।

साथ ही, मल्टी-कर्सर सपोर्ट भी Jupyter Notebook की एक सुविधा है!

पैरेलल कम्प्यूटिंग नेटवर्क?

पैरेलल कम्प्यूटिंग नेटवर्क IPython प्रोजेक्ट का हिस्सा था, पर 4.0 से यह ipyparallel नामक एक स्वतंत्र पैकेज है। यह पैकेज मूलतः Jupyter के लिए क्लस्टर्स को नियंत्रित करने वाले CLI स्क्रिप्ट्स का संग्रह है।

भले ही यह अलग हो गया है, यह IPython इकोसिस्टम का अब भी एक शक्तिशाली, पर अक्सर अनदेखा घटक है; यह इसलिए शक्तिशाली है क्योंकि एक सिंगल Python कर्नेल चलाने के बजाय, यह आपको कई मशीनों पर कई वितरित कर्नेल शुरू करने देता है।

ipyparallel के सामान्य उपयोग मामलों में वे स्थितियाँ शामिल हैं जहाँ आपको किसी मॉडल को उसके आउटपुट के वितरणों का अनुमान लगाने के लिए या इनपुट पैरामीटर्स के साथ उनके भिन्न होने का आकलन करने के लिए कई बार चलाना पड़ता है। जब मॉडल के रन स्वतंत्र होते हैं, तो आप उन्हें किसी क्लस्टर में कई कंप्यूटर्स पर समानांतर में चलाकर प्रक्रिया तेज़ कर सकते हैं। जैसे वितरित मॉडल प्रशिक्षण या सिमुलेशन्स।

टर्मिनल?

यह सुविधा Jupyter इकोसिस्टम का हिस्सा है: आपके पास Jupyter Console और Jupyter टर्मिनल एप्लिकेशन है। हालांकि, शुरुआत से ही, IPython का उपयोग मूल, इंटरएक्टिव कमांड-लाइन टर्मिनल (Python के लिए) को इंगित करने के लिए किया जाता रहा है। यह वैज्ञानिक कम्प्यूटिंग के लिए विशेष रूप से उपयुक्त, उन्नत REPL (read-eval-print loop) वातावरण प्रदान करता है। 2011 में Notebook टूल के आने और Python के लिए आधुनिक और शक्तिशाली वेब इंटरफेस देने से पहले यही मानक था।

इसके बाद, आपके पास IPython कंसोल भी था, जो दो प्रक्रियाएँ शुरू करता था: मूल IPython टर्मिनल शेल और डिफ़ॉल्ट प्रोफ़ाइल या कर्नेल, जो कि अन्यथा न कहा जाए तो शुरू हो जाता था—डिफ़ॉल्ट रूप से Python। अब IPython कंसोल अप्रचलित (deprecated) है, और यदि आप इसे शुरू करना चाहते हैं, तो आपको Jupyter Console का उपयोग करना होगा, जो Jupyter कर्नेल्स के लिए टर्मिनल-आधारित कंसोल फ्रंटएंड है। यह कोड, सिंगल-प्रॉसेस IPython टर्मिनल पर आधारित है। Jupyter Console टर्मिनल पर IPython का इंटरएक्टिव क्लाइंट-साइड अनुभव देता है, पर किसी भी Jupyter कर्नेल से जुड़ने की क्षमता के साथ, न कि केवल IPython से। इससे आप किसी भी इंस्टॉल्ड Jupyter कर्नेल को टर्मिनल पर टेस्ट कर सकते हैं, बिना पूरी नोटबुक खोले। Console IJulia, IRKernel जैसे अन्य Jupyter कर्नेल्स के साथ कंसोल-आधारित इंटरैक्शन की अनुमति देता है।

अंत में, Jupyter Notebook एप्लिकेशन में एक Terminal एप्लिकेशन भी है: एक साधारण bash शेल टर्मिनल जो आपके ब्राउज़र में चलता है। आप इसे एप्लिकेशन शुरू करने पर और ड्रॉपडाउन मेन्यू से नया टर्मिनल चुनकर आसानी से पा सकते हैं।

Qt कंसोल?

Qt कंसोल पहले IPython प्रोजेक्ट का हिस्सा था, पर अब यह Jupyter प्रोजेक्ट में आ गया है। यह एक हल्का एप्लिकेशन है जो काफी हद तक टर्मिनल जैसा लगता है, पर GUI में ही संभव कई सुधार देता है, जैसे इनलाइन फ़िगर्स, सिंटैक्स हाइलाइटिंग के साथ सही मल्टीलाइन एडिटिंग, ग्राफिकल कॉल टिप्स, और बहुत कुछ। Qt कंसोल किसी भी Jupyter कर्नेल का उपयोग कर सकता है।

निष्कर्ष

आज की ब्लॉग पोस्ट DataCamp की Definitive Guide का एक पूरक थी और इसमें कम्प्यूटेशनल नोटबुक्स का इतिहास अधिक विस्तार से कवर किया गया, साथ ही IPython और Jupyter—दोनों प्रोजेक्ट्स की कुछ मुख्य सुविधाएँ—ताकि आप दोनों के विकास और उनके बीच के अंतर को और स्पष्ट रूप से समझ सकें। लक्ष्य यह दिखाना था कि यदि आप दोनों प्रोजेक्ट्स के ऐतिहासिक परिप्रेक्ष्य को ध्यान में नहीं रखते, तो उनके बीच अंतर करना कभी-कभी मुश्किल हो सकता है। कुछ मामलों में एक धूसर क्षेत्र, एक “बीच का” हिस्सा भी होता है, जिसे आसानी से वर्गीकृत नहीं किया जा सकता।

विषय
Python