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볼 수 있다여기.

관련 정보