Почему использование опций Python «-i» или «-c» приводит к недоступности истории строки чтения из предыдущих сеансов?

Я использую файл .pythonsetup для включения истории строки чтения способом, описанным в модуле строки чтения. документы. Обычно история предыдущих сеансов интерактивного интерпретатора доступна при запуске нового сеанса.

% python
>>> # history available...

Однако при использовании -i или -c предыдущая история недоступна. Дело не в том, что readline отключен: история доступна для текущего сеанса, но эта история не будет сохранена в файле истории.

% python -i myscript.py
>>> # previous history not available

% python -i -c "x = 1"
>>> # previous history not available

Это поведение согласовано в Python 2.6, 2.7 и 3.2.

Кто-нибудь знает, почему предыдущая история readline отключена при использовании -i или -ic? Есть ли способ настроить readline, чтобы сделать историю доступной (и сохраняемой) при использовании -i или -ic?


person David    schedule 03.08.2011    source источник


Ответы (2)


Страница руководства для моего python2.6 говорит

-i ... Он не читает файл $PYTHONSTARTUP.

Поскольку именно так вы настроили поведение строки чтения ( http://docs.python.org/py3k/library/readline.html#example ), при использовании этого параметра он не действует.

person Mechanical snail    schedule 03.08.2011
comment
Это точно - я пропустил это. Это поясняет, что мои Pythons имеют включенную строку чтения; это бит истории, который я включаю с помощью ‹code›.pythonstartup‹/code›. Спасибо. - person David; 03.08.2011

Вы можете получить такое поведение, если используете IPython:

ipython -i myscript.py

Лично я бы рекомендовал использовать его в любом случае, по огромному количеству причин, по которым он превосходит интерпретатор по умолчанию.

person zeekay    schedule 03.08.2011
comment
Да, я использую iPython. Я столкнулся с этой проблемой при разработке Python 3.2. Ветвь Python 3 iPython требует ручной установки, которую я еще не пробовал. Тем не менее, я никогда раньше не замечал такого поведения и думал, что кто-то другой может знать. - person David; 03.08.2011
comment
Ухмылка. Так легко. (В Ubuntu Natty используется команда easy_install3.) - person David; 03.08.2011