[IPython-dev] Accessing get_ipython() within an embedded shell

Jacob Vanderplas jakevdp at cs.washington.edu
Tue Apr 10 14:41:57 EDT 2018


Wes,
Thanks for the links! I found the clue I needed in the pytest-ipdb link.

Instead of using:

  from IPython.terminal.embed import InteractiveShellEmbed
  ipshell = InteractiveShellEmbed()

I used this:

  from IPython import InteractiveShell
  ipshell = InteractiveShell.instance()

And now calls to IPython.get_ipython() within the shell work properly.

Thanks,
    Jake

 Jake VanderPlas
 Senior Data Science Fellow
 Director of Open Software
 University of Washington eScience Institute

On Tue, Apr 10, 2018 at 2:22 AM, Wes Turner <wes.turner at gmail.com> wrote:

> ipdb or pytest-ipdb may have a helpful example?
>
> https://github.com/gotcha/ipdb/blob/master/ipdb/__main__.py
>
> https://github.com/mverteuil/pytest-ipdb/blob/master/pytestipdb/ptipdb.py
>
> These all require nose:
>
> https://github.com/ipython/ipython/blob/master/IPython/
> core/tests/test_magic_terminal.py
>
> https://github.com/ipython/ipython/blob/master/IPython/
> core/tests/test_magic_arguments.py
>
> https://github.com/ipython/ipython/blob/master/IPython/core/tests/test_
> interactiveshell.py
>
>
> On Tuesday, April 10, 2018, Jacob Vanderplas <jakevdp at cs.washington.edu>
> wrote:
>
>> I'm trying to create automated tests for some magic functions within a
>> pytest framework. I've figured out how to do part of what I need using
>> an embedded interactive shell; briefly, I do something like this:
>>
>> from IPython.terminal.embed import InteractiveShellEmbed
>> ipshell = InteractiveShellEmbed()
>> out = ipshell.run_cell("%my_magic_command")
>> assert out.result == expected_result
>>
>> The problem I encounter is that my magic function optionally uses IPython
>> .get_ipython().user_ns to access variables in the user namespace, and
>> IPython.get_ipython() returns None when run within an embedded shell in
>> this way.
>>
>> Is there a way to create a simple embedded shell like this one that will
>> behave as if it is an actual IPython shell, with IPython.get_ipython()
>> defined?
>>
>> Thanks,
>>
>>   Jake
>>
>
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at python.org
> https://mail.python.org/mailman/listinfo/ipython-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20180410/11f1ddcb/attachment.html>


More information about the IPython-dev mailing list