<div>Hi,</div><div><div><br></div><div>Simon Ratcliffe and I stumbled upon what may be the shortest, most robust and backwards compatible way to obtain a reference to the IPython shell from within a script or module (used e.g. to add custom tab completers for our objects):</div><div><br></div><div><div>try:</div><div>&nbsp; &nbsp; # IPython 0.11 and above</div><div>&nbsp; &nbsp; ip = get_ipython()</div><div>except NameError:</div><div>&nbsp; &nbsp; # IPython 0.10 and below (or normal Python shell)</div><div>&nbsp; &nbsp; ip = __builtins__.get('__IPYTHON__')</div><div>if ip is not None:</div><div>&nbsp; &nbsp; # We are within IPython, so set up those completers</div><div>&nbsp; &nbsp; ip.set_hook('complete_command', …)</div></div><div><br></div><div>This seems to work from at least 0.8.4 all the way to 0.12 (and beyond, I hope). Any comments, scorn or ridicule&nbsp;("__builtins__? Are you nuts?")&nbsp;are very welcome.</div><div><br></div><div>Ludwig</div><div><br></div></div>