[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