गैर-अंतःक्रियात्मक रूप से IPython / Jupyter नोटबुक चलाना


79

क्या किसी को पता है कि कमांड लाइन से गैर-संवादात्मक रूप से IPython / Jupyter नोटबुक चलाना संभव है और परिणामी .ipynbफ़ाइल को रन के परिणामों के साथ सहेजा गया है। यदि यह पहले से संभव नहीं है, तो प्रेत को लागू करना कितना कठिन होगा, कुछ को कर्नेल को चालू और बंद करने के लिए, और वेब सर्वर को चालू और बंद करने के लिए कुछ करना होगा?

अधिक विशिष्ट होने के लिए, मान लें कि मेरे पास पहले से ही एक नोटबुक है original.ipynbऔर मैं उस नोटबुक में सभी कोशिकाओं को फिर से जोड़ना चाहता हूं और परिणामों को एक नई नोटबुक में सहेजना चाहता हूं new.ipynb, लेकिन यह कमांड लाइन पर एक एकल कमांड के साथ या तो ब्राउज़र में बातचीत की आवश्यकता के बिना करें। कर्नेल या वेब सर्वर को बंद करने के लिए, और यह मानते हुए कि कोई कर्नेल या वेब सर्वर पहले से नहीं चल रहा है।

उदाहरण कमांड:

$ ipython notebook run original.ipynb --output=new.ipynb

जवाबों:


70

हां यह संभव है, और आसान है, यह (ज्यादातर) 2.0 के लिए आईपीथॉन कोर में होगा, मैं अब उन उदाहरणों को देखने का सुझाव दूंगा ।

[संपादित करें]

$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb

यह अब जुपिटर NbConvert में है। NbConvert एस के एक समूह के साथ आता है Preprocessorजो डिफ़ॉल्ट रूप से अक्षम होते हैं, उनमें से दो ( ClearOutputPreprocessorऔर ExecutePreprocessor) ब्याज के होते हैं। आप या तो उन्हें अपने (स्थानीय | वैश्विक) कॉन्फ़िगर फ़ाइल (ओं) में c.<PreprocessorName>.enabled=True(अपरकेस जो कि अजगर है) के माध्यम से सक्षम कर सकते हैं , या कमांड लाइन पर --ExecutePreprocessor.enabled=Trueहमेशा की तरह कमांड रख सकते हैं।

--ExecutePreprocessor.enabled=Trueसुविधाजनक है --executeउर्फ कि NbConvert के हाल के संस्करण पर इस्तेमाल किया जा सकता है। इसे --inplaceअगर वांछित के साथ जोड़ा जा सकता है

उदाहरण के लिए, नोटबुक को बिना हेडलेस चलाने के बाद HTML में कनवर्ट करें:

$ jupyter nbconvert --to=html --execute RunMe.ipynb

आउटपुट स्ट्रिपिंग के बाद पीडीएफ में परिवर्तित

$ ipython nbconvert --to=pdf --ClearOutputPreprocessor.enabled=True RunMe.ipynb

यह (निश्चित रूप से) <insert-your-language-here>यदि आप सेट करते हैं, तो कर्नेल को स्पैनिंग करके गैर-पायथन कर्नेल के साथ काम करता है --profile=<your fav profile>। रूपांतरण वास्तव में लंबा हो सकता है क्योंकि इसे नोटबुक को फिर से चलाने की आवश्यकता है। आप --to=notebookविकल्प के साथ नोटबुक को नोटबुक रूपांतरण में कर सकते हैं ।

कई अन्य विकल्प हैं (टाइमआउट, त्रुटियों की अनुमति दें, ...) उपयोग के मामले के आधार पर सेट / अनसेट करने की आवश्यकता हो सकती है। अधिक जानकारी के लिए प्रलेखन और निश्चित रूप jupyter nbconvert --helpसे --help-all, या ऑनलाइन दस्तावेज nbconvert देखें।


1
मुझे सही दिशा में इशारा करने के लिए धन्यवाद। के बाद से सटीक कोड पोस्ट नहीं किया गया है, मैं gists में से एक और जोड़ा उत्पादन कोड काँटेदार ताकि निम्नलिखित सिर्फ एक वांछित तरह कमांडलाइन से एक नोटबुक चलेंगे $ ipnbdocttest.py original.ipynb new.ipynb gist.github.com/davidshinn/6110231
davidshinn

3
आईपीथॉन 2 में नहीं, आईपीथॉन 3 के लिए अपने रास्ते पर
मैट

7
ऐसा लगता है कि यह अब (Ipython 3.1.0) है: ipython nbconvert --to=html --execute RunMe.ipynb
patricksurry

5
@NoahR प्रयास करें --ExecutePreprocessor.timeout=-1 रेफरी
Lenna

5
नवीनतम ज्यूपिटर (4.1.0) वास्तव में नोटबुक को गैर-संवादात्मक रूप से चलाने की अनुमति देता है, jupyter nbconvert --to notebook --execute --allow-errors notebook.ipynbशायद इसका उत्तर संपादित किया जा सकता है
मंगलार्दिनी

20

जब तक यह कार्यक्षमता कोर का हिस्सा नहीं बन जाती, तब तक मैंने एक छोटी कमांड लाइन ऐप को एक साथ रखा, जो आप चाहते हैं। इसे रनपी कहा जाता है और आप इसे स्थापित कर सकते हैं pip install runipyस्रोत और रीडमी GitHub पर कर रहे हैं


रनिपि मेरे लिए इतनी अच्छी तरह से काम नहीं करता है: यह signatureक्षेत्र को अपडेट नहीं करता है , और परिणाम के रूप में (अच्छी तरह से, मुझे लगता है कि यह एक परिणाम है), मेरे एसवीजी में से कोई भी वास्तव में प्रदान नहीं किया गया है: आईपीथॉन __repr__इसके बजाय सादा समय प्रतिपादन प्रदान करना पसंद करता है ।
एकिम


1

समानांतर श्रमिक, इनपुट पैरामीटर, ई-मेल भेजने या S3 इनपुट / आउटपुट जैसी कुछ सुविधाओं को कवर करने के लिए ... आप ज्यूपिटर-रनर स्थापित कर सकते हैं

pip install jupyter-runner

गितुब पर पढ़ें: https://github.com/omar-masmoudi/jupyter-runner


-5

आप केवल कमांड लाइन के माध्यम से iPython-Notebook-server चला सकते हैं:

ipython notebook --pylab inline

यह सर्वर को गैर-इंटरैक्टिव मोड में शुरू करेगा और सभी आउटपुट कोड के नीचे मुद्रित होता है। फिर आप .ipynb- फाइल को सेव कर सकते हैं जिसमें कोड और आउटपुट शामिल हैं।


प्रतिक्रिया के लिए धन्यवाद, हालांकि मैं एक और अधिक विशिष्ट समाधान की तलाश में था जिसे वेब ब्राउज़र में न तो हस्तक्षेप की आवश्यकता थी और न ही कर्नेल और वेब सर्वर को बंद करने की। मैंने प्रश्न को अधिक विशिष्ट होने के लिए संपादित किया।
davidshinn

इस मामले में, मुझे नहीं पता कि आगे कैसे बढ़ना है। क्या आप नियमित रूप से ऐसा करने की योजना बनाते हैं? IPython-Notebook को एक ब्राउज़र में अंतःक्रियात्मक रूप से उपयोग करने के लिए डिज़ाइन किया गया है और कमांड लाइन से विशिष्ट ipynb-Files को सहेजना मेरे लिए अजीब लगता है।
ala

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

4
यह मेरे लिए एक आश्चर्यजनक रूप से उपयोगी उपयोग के मामले जैसा लगता है। आप एक टेम्पलेट नोटबुक ले सकते हैं, इसे थोड़ा पैरामीटर कर सकते हैं, और फिर एक ब्राउज़र को छूने के बिना एक मुद्रण योग्य पूरी तरह से निष्पादित समाधान प्राप्त कर सकते हैं।
होल्डनवेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.