2010-11-09 16 views
31

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

दुर्भाग्यवश, मुझे स्क्रिप्ट द्वारा आवश्यक कमांड लाइन विकल्प भेजने के लिए कोई रास्ता नहीं मिल रहा है।

IPython सब कुछ मान लिया गया में IPython के लिए है जब मैं स्क्रिप्ट और के रूप में इसके विकल्प पारित:

ipython <script_name> <script_options> 

वहाँ एक समाधान या वैकल्पिक हल है?

उत्तर

23
ipython -i -c "%run test.py 1 2 3 4" 
+0

बहुत अच्छा! दुर्भाग्यवश, जब यह अपवाद हो जाता है, तो यह मुझे ओएस कमांड लाइन पर वापस ले जाता है, आईपीथन प्रॉम्प्ट पर नहीं। सुझाव? –

+1

ठीक है आप केवल ipython शुरू कर सकते हैं और फिर% रन test.py 1 2 3 4 –

+1

असल में जोड़कर -i इसे खोल में बना देता है। –

39
ipython -- sometest.py 1 2 3 4 
+2

यह काम करता है, लेकिन मुझे दस्तावेज़ों में यह नहीं मिला, क्या आप मुझे यह कह सकते हैं कि यह कहां दस्तावेज है? –

+3

इंटरेक्टिव शैल उपयोग 'ipython -i - sometest.py 1 2 3 4' वाक्यविन्यास के भीतर भी रहना है। –

+2

ध्यान दें कि '-' सिस्टम खोल दुभाषिया की एक विशेषता है, और ipython shell के लिए विशिष्ट नहीं है –

4

मैं वहाँ एक पहले से ही स्वीकार किए जाते हैं समाधान है, लेकिन की IPython इस काम नहीं करेगा सबसे हाल के संस्करण में पता है। यहाँ मैं --autoreload

ipython --c="%run test.py --autoreload" 

यह .11 IPython उपयोग कर रहा है के साथ बवंडर परीक्षण चलाने के लिए उपयोग करने के लिए एक कट और आदेश का पेस्ट है।

1

सरल उदाहरण here

script.py

from sys import argv 

script, first, second, third = argv 

print "The script is called:", script 
print "Your first variable is:", first 
print "Your second variable is:", second 
print "Your third variable is:", third 

खोल:

$ ipython script.py stuff things that 
The script is called: ex13.py 
Your first variable is: stuff 
Your second variable is: things 
Your third variable is: that 
0

IPython के व्यवहार के कई पहलुओं को उपयोगकर्ता के IPython config फाइल, जो आम तौर पर ~/.ipython/ में हैं में सेटिंग के माध्यम से नियंत्रित किया जा सकता। उपयोगकर्ता एकाधिक प्रोफाइल बना सकता है, प्रत्येक कॉन्फ़िगरेशन पैरामीटर की विभिन्न सेटिंग्स के साथ। प्रत्येक प्रोफाइल में .ipython फ़ोल्डर में एक अलग फ़ोल्डर में इसकी सेटिंग्स होती है। डिफ़ॉल्ट प्रोफ़ाइल profile_default में है, और व्यवहार को अनुकूलित करने के लिए वहां मुख्य फ़ाइल ipython_config.py है। डिफ़ॉल्ट रूप से, यह कॉन्फ़िगरेशन चर और उनकी डिफ़ॉल्ट सेटिंग्स को दिखाते हुए टिप्पणी की गई पंक्तियों के साथ लगभग पूरी तरह से टिप्पणी की जाती है। व्यवहार को बदलने के लिए असुविधा या रेखाएं डालें।

कैसे IPython चल रही स्क्रिप्ट के अंत में बर्ताव करता है बदलने के लिए, उपयोग करें:

c.TerminalIPythonApp.force_interact = True 

फिर जब स्क्रिप्ट समाप्त होता है (या एक अपवाद को जन्म देती है), IPython चालू रखने के लिए और एक शीघ्र प्रस्तुत करेगा। यह ipython -i जैसा ही व्यवहार है।

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

आईपीथन कॉन्फ़िगरेशन प्रलेखन यहां उपलब्ध है:

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^