Q:

How to drop into REPL (Read, Eval, Print, Loop) from Python code

Is there a way to programmatically force a Python script to drop into a REPL at an arbitrary point in its execution, even if the script was launched from the command line? 
I'm writing a quick and dirty plotting program, which I want to read data from stdin or a file, plot it, and then drop into the REPL to allow for the plot to be customized. 

A:

I frequently use this:
def interact():
    import code
    code. InteractiveConsole(locals=globals()).interact()

A:

You could try using the interactive option for python:
python -i program.py

This will execute the code in program.py, then go to the REPL.   Anything you define or import in the top level of program.py will be available. 

A:

Here's how you should do it (IPython > v0.11):
import IPython
IPython.embed()

For IPython <= v0.11:
from IPython. Shell import IPShellEmbed

ipshell = IPShellEmbed()

ipshell() # this call anywhere in your program will start IPython

You should use IPython, the Cadillac of Python REPLs.  See http://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipython
From the documentation:

It can also be useful in scientific
  computing situations where it is
  common to need to do some automatic,
  computationally intensive part and
  then stop to look at data, plots, etc. 
  Opening an IPython instance will give
  you full access to your data and
  functions, and you can resume program
  execution once you are done with the
  interactive part (perhaps to stop
  again later, as many times as needed).