Python 3.4にアップグレードした後、すべての対話型コマンドはに記録されます~/.python_history
。 Pythonがこのファイルを作成または書き込みしたくありません。
シンボリックリンク生成が/dev/null
機能せず、Pythonはファイルを削除して再生成します。これ文書削除することをお勧めしますが、sys.__interactivehook__
これによりタブ補完機能も削除されます。この履歴ファイルへの書き込みを無効にしますが、タブの完成を維持するにはどうすればよいですか?
追加の詳細:
- ディストリビューション: Arch Linux x86_64
- 6.3-3行を読む
- Python 3.4.0-2
答え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見ることができるここ。