2010-04-09 43 views
15

我想這樣做:有沒有辦法讓Python在腳本中間變成交互式的?

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

是否有可能與蟒蛇如果沒有,你看到做同樣的事情的另一種方式?

+3

謝謝大家!爲了記錄在案,使用代碼模塊實現這一目標的最簡單的方法是: 導入代碼 code.interact(本地=全局()) – 2010-04-12 12:15:55

+2

要獲得局部變量到命名空間,以及,你需要 ' code.interact(local = dict(globals(),** locals())'。 請注意'** locals'的增加,我自己在想這個問題,你的評論是我發現的最佳答案。 ) – 2013-07-03 21:34:42

回答

5

隨着IPython的V1.0,你可以簡單地使用

from IPython import embed 
embed() 

與在docs顯示更多選項。

+0

您可以在任何地方使用它並保留示波器。 – 2014-10-05 13:54:43

-1

你可以叫Python本身:

import subprocess 

print "Hola" 

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

print "Adios" 
8

code模塊將允許你啓動一個Python REPL。

5

不完全是你想要的東西,但python -i將在執行腳本後啓動交互式提示。

-i:檢查行書交互後,(也PYTHONINSPECT = x)和力的提示,即使標準輸入不出現你的時候是終端

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

使用-i標誌啓動Python並設置一個在清理時運行的atexit處理程序。

文件script.py:

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

,然後你剛開始用Python -i標誌:

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

Goodbye 
6

爲了詳細說明IVA的回答是:embedding-a-shell,incoporating code和IPython的。

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() 
相關問題