2013-03-01 6 views
5

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

मैं एक अजगर आवेदन एक IPython क्यूटी सांत्वना

http://ipython.org/ipython-doc/dev/interactive/qtconsole.html

में चल रहा जब मैं एक त्रुटि का सामना है, मैं उस बिंदु पर कोड के साथ बातचीत करने में सक्षम होना चाहते हैं।

try: 
     raise Exception() 
    except Exception as e: 
     try: # use exception trick to pick up the current frame 
      raise None 
     except: 
      frame = sys.exc_info()[2].tb_frame.f_back 
     namespace = frame.f_globals.copy() 
     namespace.update(frame.f_locals) 
     import IPython 
     IPython.embed_kernel(local_ns=namespace) 

मैं इस काम करेगा लगता होगा, लेकिन मैं कोई त्रुटि मिलती है:

RuntimeError: सूत्र केवल एक बार शुरू किया जा सकता

उत्तर

4

आप the following recipe पालन कर सकते हैं अपने कार्यक्रम में एक IPython सत्र एम्बेड करने के लिए:

try: 
    get_ipython 
except NameError: 
    banner=exit_msg='' 
else: 
    banner = '*** Nested interpreter ***' 
    exit_msg = '*** Back in main IPython ***' 

# First import the embed function 
from IPython.frontend.terminal.embed import InteractiveShellEmbed 
# Now create the IPython shell instance. Put ipshell() anywhere in your code 
# where you want it to open. 
ipshell = InteractiveShellEmbed(banner1=banner, exit_msg=exit_msg) 

फिर ipshell() का उपयोग करें जब भी आप आईपीथन शेल में डालना चाहते हैं। यह आपको अपने कोड में आईपीथन दुभाषियों को एम्बेड करने (और यहां तक ​​कि घोंसला) करने की अनुमति देगा और ऑब्जेक्ट्स या प्रोग्राम की स्थिति का निरीक्षण करेगा।

23

मैं सिर्फ इस का उपयोग करें:

from IPython import embed; embed() 

मेरे लिए कुछ और की तुलना में बेहतर काम करता है :)

+0

मैं इस का उपयोग कर प्यार नई परियोजनाओं का पता लगाने के। मैंने थोड़ा सा बनाया है। यूआरएल j.mp/ipshell कि मैं अपने कोड में घुमा सकता हूं। यह https://gist.github.com/RichardBronosky/570492 को इंगित करता है –