2009-10-06 6 views
12

Мне очень нравится IPython для работы с интерпретатором python. Тем не менее, я постоянно нахожу себя набрав exit, чтобы выйти, и получите запрос «Тип exit() для выхода».exit from ipython

Я знаю, что могу набрать Ctrl-D для выхода, но есть ли способ, которым я могу ввести exit без круглых скобок и получить IPython для выхода?

Update: Благодаря nosklo, это можно легко сделать, добавив следующую строку в основной функции() в вашем ipy_user_conf.py:

# type exit to exit 
ip.ex("type(exit).__repr__ = lambda s: setattr(s.shell, 'exit_now', True) or ''") 
+1

I также имели (имели) ваши проблемы, используя «выход» из-за той же мышечной памяти. Для тех, кто новичок в IPython (или ищет более быстрый способ), удар по -D в два раза быстрее. Просто не ударяйте его три раза, иначе вы также войдете в свою оболочку (linux). –

ответ

11
>>> import sys 
>>> class Quitter(object): 
...  def __repr__(self): 
...   sys.exit() 
... 
>>> exit = Quitter() 

Вы можете использовать его как это:

>>> exit 

EDIT:

Я не использую ipython себя, но, кажется, есть обработчик sys.exit странных. Решение, которое я нашел это следующим образом:

In [1]: type(exit).__repr__ = lambda s: setattr(s.shell, 'exit_now', True) or '' 

Использование:

In [2]: exit 
+0

Это не совсем работает с IPython. Он имеет свой собственный класс Quitter, который вызывает соответствующий метод выхода на фактическом экземпляре IPShell. Но общая идея верна. –

+0

@Robert Kern: Хорошо, нашел решение 'ipython'. – nosklo

3

%exit или %Exit, если вы включили подтверждение и хотите пропустить его. Вы можете использовать его, например, %e путем размещения execute __IPYTHON__.magic_e = __IPYTHON__.magic_exit в вашем ipythonrc.

+0

Спасибо, но я действительно хочу буквально набрать «exit». Потому что он застрял в мышечной памяти. –

+2

'% exit' или'% Exit' не являются функциями линейной магии в IPython версии 1.1.0. Поэтому, используя IPython 1.1.0, этот ответ не работает для меня вообще. – halloleo

+1

@halloleo Мое сердце кровоточит для вас за ответ от 5 лет назад уже не относящийся к делу. 'exit' работает OOB в последних версиях IPython и весь этот вопрос не нужен. –

0

По крайней мере, в IPython 0.10, вы должны быть в состоянии установить IPython .rc.confirm_exit = False

Смежные вопросы