Python 3.4で新しい履歴機能を無効にする方法は?

Python 3.4で新しい履歴機能を無効にする方法は?

Python 3.4にアップグレードした後、すべての対話型コマンドはに記録されます~/.python_history。 Pythonがこのファイルを作成または書き込みしたくありません。

シンボリックリンク生成が/dev/null機能せず、Pythonはファイルを削除して再生成します。これ文書削除することをお勧めしますが、sys.__interactivehook__これによりタブ補完機能も削除されます。この履歴ファイルへの書き込みを無効にしますが、タブの完成を維持するにはどうすればよいですか?

追加の詳細:

答え1

別の ~/.pythonrc ソリューション:

import readline
readline.write_history_file = lambda *args: None

答え2

Python 3.6以降、次のものが利用可能です。readline.set_auto_historyこの機能を無効にします。

import readline
readline.set_auto_history(False)

答え3

これは私にとって効果的です。

~/.pythonrcファイルを生成します。

import os
import atexit
import readline

readline_history_file = os.path.join(os.path.expanduser('~'), '.python_history')
try:
    readline.read_history_file(readline_history_file)
except IOError:
    pass

readline.set_history_length(0)
atexit.register(readline.write_history_file, readline_history_file)

その後、エクスポート:

export PYTHONSTARTUP=~/.pythonrc

答え4

私の現在のソリューション(最近のPython 3バージョン)は〜/ .python_historyのデフォルトの使用を防ぎますが、与えられたファイルに履歴を明示的に書き込む可能性は維持します(readline.write_history_file(filename)またはreadline.append_history_file(..) )使用)。 PYTHONSTARTUPファイルには次のものが含まれます。

import readline
import time

readline.add_history("# " + time.asctime()) # prevent default use of ~/.python_history
readline.set_history_length(-1) # unlimited

これは、インタプリタの開始時間とともに明示的に作成された履歴をスタンプ処理する楽しい副作用があります。修正のために動作します。エラー5845見ることができるここ

関連情報