2011-08-03 25 views
4

我使用.pythonsetup文件以readline module docs中描述的方式启用readline历史记录。通常,当我开始一个新的会话时,以前的交互式解释器会话的历史记录可用。为什么使用Python的'-i'或'-c'选项会导致先前会话的readline历史记录不可用?

% 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中是一致的。

有谁知道为什么在使用-i或-ic时为什么先前的readline历史被禁用?在使用-i或-ic时,是否有办法配置readline以使历史记录可用(并且可保存)?

回答

3

的手册页我python2.6

-i ......它不读取$ PYTHONSTARTUP文件。

由于这是您如何定制readline行为(http://docs.python.org/py3k/library/readline.html#example),所以在使用该选项时它不会生效。

+0

它确实如此 - 我错过了。这说明我的Pythons已启用readline。这是我使用.pythonstartup启用的历史记录。谢谢。 – David

1

如果使用IPython你可以得到这样的行为:

ipython -i myscript.py 

就个人而言,我建议你反正使用它,对于广大的原因,是优于默认解释。

+0

是的,我确实使用iPython。我在做一些Python 3.2开发时遇到了这个问题。 iPython的Python 3分支需要手动安装,我还没有尝试过。尽管如此,我从未注意到之前的行为,并认为其他人可能知道。 – David

+1

'easy_install-3.2 http:// archive.ipython.org/release/0.11/py3/ipython-0.11-py3.zip' – zeekay

+0

Grin。太简单。 (在Ubuntu Natty下,命令是easy_install3。) – David

相关问题