2010-04-09 9 views
15

मैं की तरह कुछ करने के लिए करना चाहते हैं:क्या स्क्रिप्ट के बीच में पाइथन इंटरैक्टिव बनने का कोई तरीका है?

do lots of stuff to prepare a good environement 
become_interactive 
#wait for Ctrl-D 
automatically clean up 

यह अजगर के साथ संभव है यदि नहीं, तो आप एक ही बात करने का एक और तरीका है देखते हैं??

+3

सभी को धन्यवाद! आयात कोड code.interact (स्थानीय = वैश्विक()) –

+2

रूप में अच्छी तरह नेम स्पेस में स्थानीय चर पाने के लिए आपको जरूरत ': रिकॉर्ड के लिए, सबसे आसान तरीका है इस लक्ष्य को हासिल करने के लिए कोड मॉड्यूल का उपयोग करने के लिए निम्न है code.interact (स्थानीय = dict (globals(), ** स्थानीय()) ' ' ** स्थानीय लोगों 'के अतिरिक्त ध्यान दें। मैं इस सवाल को स्वयं सोच रहा था, और आपकी टिप्पणी मुझे मिली सबसे अच्छी प्रतिक्रिया थी: -) –

उत्तर

5
IPython v1.0 के साथ

, तो आप बस

from IPython import embed 
embed() 
अधिक विकल्प docs में दिखाया गया है साथ

उपयोग कर सकते हैं।

+0

आप इसे कहीं भी उपयोग कर सकते हैं और यह दायरे को संरक्षित करता है। –

-1

आप अजगर ही कह सकते हैं:

import subprocess 

print "Hola" 

subprocess.call(["python"],shell=True) 

print "Adios" 
8

code मॉड्यूल आप एक अजगर आरईपीएल शुरू करने के लिए अनुमति देगा।

5

बिल्कुल वही चीज़ नहीं जो आप चाहते हैं लेकिन पाइथन -i स्क्रिप्ट निष्पादित करने के बाद इंटरैक्टिव प्रॉम्प्ट प्रारंभ करेगा।

-i: निरीक्षण सहभागी स्क्रिप्ट चलाने के बाद, (भी PYTHONINSPECT = x) और बल संकेतों का है, भले ही stdin जब आप एक टर्मिनल

$ python -i your-script.py 
Python 2.5.4 (r254:67916, Jan 20 2010, 21:44:03) 
... 
>>> 
10

उपयोग मैं झंडा होने के लिए प्रकट नहीं होता है पाइथन शुरू करें और सफाई करते समय चलाने के लिए एक अस्थिर हैंडलर सेट करें।

फ़ाइल script.py:

import atexit 
def cleanup(): 
    print "Goodbye" 
atexit.register(cleanup) 
print "Hello" 

और फिर तुम सिर्फ मैं ध्वज के साथ अजगर शुरू:

C:\temp>\python26\python -i script.py 
Hello 
>>> print "interactive" 
interactive 
>>> ^Z 

Goodbye 
6

IVA के जवाब पर विस्तार से बता दें: embedding-a-shell, code और IPython incoporating।

def prompt(vars=None, message="welcome to the shell"): 
    #prompt_message = "Welcome! Useful: G is the graph, DB, C" 
    prompt_message = message 
    try: 
     from IPython.Shell import IPShellEmbed 
     ipshell = IPShellEmbed(argv=[''],banner=prompt_message,exit_msg="Goodbye") 
     return ipshell 
    except ImportError: 
     if vars is None: vars=globals() 
     import code 
     import rlcompleter 
     import readline 
     readline.parse_and_bind("tab: complete") 
     # calling this with globals ensures we can see the environment 
     print prompt_message 
     shell = code.InteractiveConsole(vars) 
     return shell.interact 

p = prompt() 
p()